复述中列表存储对象的方法

  介绍

小编给大家分享一下复述中列表存储对象的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

如果需要用到复述,存储列表对象,而列表又不需要进行操作,可以按照MC的方式进行存储,不过能之类的客户端没有提供API,可以有两种思路实现:

1。,,分别序列化元素,然后设置存储

2。,,序列化列表对象,存储

这两种方法都类似MC的对象方法存储、运用这种方式意味着放弃复述,对列表提供的操作方法。

进口net.spy.memcached.compat.CloseUtil;   进口net.spy.memcached.compat.log.Logger;   进口net.spy.memcached.compat.log.LoggerFactory;   进口redis.clients.jedis.Client;   进口redis.clients.jedis.Jedis;   进口redis.clients.jedis.JedisPool;   进口redis.clients.jedis.JedisPoolConfig;   进口. io . *;   进口java.util.ArrayList;   进口并不知道;   进口java.util.Random;/* *   *由IntelliJ IDEA。   *用户:lifeng.xu   *日期:12-6-11   *时间:上午十一10   *修改这个模板使用文件| |设置文件模板。   */公开课JedisTest {   私有静态日志记录器=LoggerFactory.getLogger (JedisTest.class);/* *   *能能资源池   * @return   */公共静态JedisPool buildJedisPool () {   JedisPoolConfig配置=new JedisPoolConfig ();   config.setMaxActive (1);   config.setMinIdle (50);   config.setMaxIdle (3000);   config.setMaxWait (5000);   JedisPool JedisPool=new JedisPool(配置,   “* * * * *“,* * * *);   返回jedisPool;   }/* *   *测试数据   * @return   */公共静态ListbuildTestData () {   用户=新用户();   a.setName (“a");   用户b=新用户();   b.setName (“b");   List列表=new ArrayList ();   list.add(一个);   list.add (b);   返回列表;   }/* *   *测试   */公共静态孔隙testSetElements () {   ListtestData=https://www.yisu.com/zixun/buildTestData ();   能能=buildJedisPool () .getResource ();   新随机字符串键=" testSetElements " + (1000) .nextInt ();   jedis.set (key.getBytes (), ObjectsTranscoder.serialize (testData));//验证   byte []=jedis.get (key.getBytes ());   列表<用户>=ObjectsTranscoder.deserialize(的);   (用户用户:列表){   system . out。println (“testSetElements用户名是:“+ user.getName ());   }   }   公共静态孔隙testSetEnsemble () {   <用户列表> testData=buildTestData ();   能能=buildJedisPool () .getResource ();   新随机字符串键=" testSetEnsemble " + (1000) .nextInt ();   jedis.set (key.getBytes (), ListTranscoder.serialize (testData));//验证   byte []=jedis.get (key.getBytes ());   列表<用户>=(列表<用户>)ListTranscoder.deserialize(的);   (用户用户:列表){   system . out。println (“testSetEnsemble用户名是:“+ user.getName ());   }   }   公共静态void main (String [] args) {   testSetElements ();   testSetEnsemble ();   }   公共静态空间关闭(Closeable Closeable) {   如果(closeable !=null) {   尝试{   closeable.close ();   }捕捉(异常e) {   logger.info (“closeable无法接近% s”, e);   }   }   }   静态类用户实现了Serializable {   字符串名称;   公共字符串getName () {   返回名称;   }   公共空间setName(字符串名称){   this.name=名称;   }   }   静态类ObjectsTranscoder {      公共静态byte[]序列化(列表<用户>价值){   如果(值==null) {   把新NullPointerException(“不能序列化null”);   }   byte[]房车=零;   ByteArrayOutputStream bos=零;   ObjectOutputStream os=零;   尝试{   bos=new ByteArrayOutputStream ();   操作系统=new ObjectOutputStream (bos);   (用户用户:值){   os.writeObject(用户);   }   os.writeObject(空);   os.close ();   bos.close ();   房车=bos.toByteArray ();   }捕捉(IOException e) {   把新IllegalArgumentException (“Non-serializable对象”,e);   最后}{   关闭(os);   关闭(bos);   }   返回房车;   }   公共静态列表<用户>反序列化(byte []) {   用户列表<用户>=new ArrayList <> ();   ByteArrayInputStream bis=零;   ObjectInputStream=零;   尝试{   如果(在!=null) {   bis=new ByteArrayInputStream(的);   是=new ObjectInputStream (bis);   而(真){   用户用户=(用户)is.readObject ();   如果(用户==null) {   打破;   其他}{   list.add(用户);   }   }   is.close ();   bis.close ();   }   }捕捉(IOException e) {   记录器。警告(“抓住IOException解码% d字节的数据”,   在==零?0:。长度,e);   }捕捉(ClassNotFoundException e) {   记录器。警告(“抓住CNFE解码% d字节的数据”,   在==零?0:。长度,e);   最后}{   CloseUtil.close(是);   CloseUtil.close (bis);   }   返回列表;   }   }      静态类ListTranscoder {   公共静态byte[]序列化对象(价值){   如果(值==null) {   把新NullPointerException(“不能序列化null”);   }   byte[]房车=零;   ByteArrayOutputStream bos=零;   ObjectOutputStream os=零;   尝试{   bos=new ByteArrayOutputStream ();   操作系统=new ObjectOutputStream (bos);   os.writeObject(价值);   os.close ();   bos.close ();   房车=bos.toByteArray ();   }捕捉(IOException e) {   把新IllegalArgumentException (“Non-serializable对象”,e);   最后}{   关闭(os);   关闭(bos);   }   返回房车;   }   公共静态对象进行反序列化(byte []) {   对象房车=零;   ByteArrayInputStream bis=零;   ObjectInputStream=零;   尝试{   如果(在!=null) {   bis=new ByteArrayInputStream(的);   是=new ObjectInputStream (bis);   房车=is.readObject ();   is.close ();   bis.close ();   }   }捕捉(IOException e) {   记录器。警告(“抓住IOException解码% d字节的数据”,   在==零?0:。长度,e);   }捕捉(ClassNotFoundException e) {   记录器。null   null   null   null   null   null   null   null   null   null

复述中列表存储对象的方法