一个Redis存读对象实例的小例子

Redis没有直接存储对象的方法,不过Redis要以存储字节,所以可以先把对象自己写的一个序列化和反序列化的方法
  1. package com.comtop;

  2.  
  3. import java.io.ByteArrayInputStream;

  4. import java.io.ByteArrayOutputStream;

  5. import java.io.ObjectInputStream;

  6. import java.io.ObjectOutputStream;

  7. import java.io.Serializable;

  8.  
  9. import org.junit.Before;

  10. import org.junit.Test;

  11.  
  12. import redis.clients.jedis.Jedis;

  13. import redis.clients.jedis.JedisPool;

  14. import redis.clients.jedis.JedisPoolConfig;

  15.  
  16. /**

  17. * @ProjectName:Skeleton

  18. * @PackageName:com.comtop

  19. * @Verson :0.1

  20. * @CreateUser :Test

  21. * @CreateDate :2014-7-19上午10:47:11

  22. * @UseFor :

  23. */

  24. public class JedisTest {

  25. JedisPool pool;

  26. Jedis jedis;

  27.  
  28. @Before

  29. public void setUp() {

  30. JedisPoolConfig config = new JedisPoolConfig();

  31. pool = new JedisPool(config, "127.0.0.1");

  32. jedis = pool.getResource();

  33. // 密码验证

  34. jedis.auth("password");

  35. }

  36.  
  37. @Test

  38. public void test() throws InterruptedException {

  39. Person person = new Person("123", "alan");

  40. jedis.set("person:123".getBytes(), SerializeUtil.ObjTOSerialize(person));

  41. person = new Person("234", "bruce");

  42. jedis.set("person:234".getBytes(), SerializeUtil.ObjTOSerialize(person));

  43.  
  44. Person per = getObject("234");

  45. System.out.println(per);

  46. }

  47.  
  48. private Person getObject(String id) {

  49. byte[] person = jedis.get(("person:" + id).getBytes());

  50. return (Person) SerializeUtil.unSerialize(person);

  51. }

  52. }

  53.  
  54. class Person implements Serializable {

  55. private static final long serialVersionUID = 1L;

  56. private String id;

  57. private String name;

  58.  
  59. /**

  60. * @param id

  61. * @param name

  62. */

  63. Person(String id, String name) {

  64. super();

  65. this.id = id;

  66. this.name = name;

  67. }

  68.  
  69. public String getId() {

  70. return id;

  71. }

  72.  
  73. public void setId(String id) {

  74. this.id = id;

  75. }

  76.  
  77. public String getName() {

  78. return name;

  79. }

  80.  
  81. public void setName(String name) {

  82. this.name = name;

  83. }

  84.  
  85. @Override

  86. public String toString()

  87. {

  88. return this.id +" "+this.name ;

  89. }

  90. }

  91.  
  92. class SerializeUtil {

  93.  
  94. /**

  95. *

  96. * @CreateUser:

  97. * @ReturnType:byte[]

  98. * @param obj

  99. * @return

  100. * @CreateDate:2014-7-19上午11:38:19

  101. * @SerializeUtilUseFor :序列化一个对象

  102. */

  103. public static byte[] ObjTOSerialize(Object obj) {

  104. ObjectOutputStream oos = null;

  105. ByteArrayOutputStream byteOut = null;

  106. try {

  107. byteOut = new ByteArrayOutputStream();

  108. oos = new ObjectOutputStream(byteOut);

  109. oos.writeObject(obj);

  110. byte[] bytes = byteOut.toByteArray();

  111. return bytes;

  112. } catch (Exception e) {

  113. }

  114. return null;

  115. }

  116.  
  117. /**

  118. *

  119. * @CreateUser:Test

  120. * @ReturnType:Object

  121. * @param bytes

  122. * @return

  123. * @CreateDate:2014-7-19上午11:38:29

  124. * @SerializeUtilUseFor :反序列化

  125. */

  126. public static Object unSerialize(byte[] bytes) {

  127. ByteArrayInputStream in = null;

  128. try {

  129. in = new ByteArrayInputStream(bytes);

  130. ObjectInputStream objIn = new ObjectInputStream(in);

  131. return objIn.readObject();

  132. } catch (Exception e) {

  133. }

  134. return null;

  135. }

  136. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值