redis储存对象_serialize+常用命令

redis只支持string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

实际工作中要存对象,就需要把对象序列化后存入或转化成json字符串

redis 常用命令:

查看当前库里有多少key:  dbsize

清除当前库的所有key:   flushdb

key 很多时,不要轻易使用keys *,否则容易把生产环境搞死 

 

duckservice:

  

public List<Duck> selectAllDuck(){
List<Duck> ducks = new ArrayList<>();
long beginTime = System.currentTimeMillis();
Duck duck = new Duck();
for(int i =0;i<100000;i++){
duck.setDuckName(""+i);
duck.setDucknum(""+i);
duck.setServiceMoney(new BigDecimal(i+""));
duck.setJointime(LocalDateTime.now());
ducks.add(duck);
}
long endTime = System.currentTimeMillis();
System.out.println("共创建"+ducks.size()+"对象,用时"+(endTime-beginTime));
return ducks;
}

test:
//redis存储对象
public void redisSaveObj(){
List<Duck> ducks = duckService.selectAllDuck();
Jedis jedis = new Jedis("127.0.0.1",6379,10000);
long beginTime = System.currentTimeMillis();
for(Duck duck:ducks){
byte[] bytes = SerializeUtil.serialize(duck);
jedis.set(duck.getDucknum().getBytes(), bytes);
}

long endTime = System.currentTimeMillis();
System.out.println("共序列+反序列化"+ducks.size()+"对象,用时"+(endTime-beginTime));
System.out.println("从redis get key后反序列化结果!!!:"+SerializeUtil.unserialize(jedis.get("1".getBytes())));
}

serializeUtil:
public class SerializeUtil {
public static byte[] serialize(Object object) {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
// 序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
byte[] bytes = baos.toByteArray();
return bytes;
} catch (Exception e) {

}
return null;
}

public static Object unserialize( byte[] bytes) {
if(bytes==null){
System.out.println("反序列化时的字节是空");
return null;
}
ByteArrayInputStream bais = null;
try {
// 反序列化
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (Exception e) {
System.out.println("faslecatch");
}
System.out.println("false");
return null;
}

附带:
redisPool 连接池
JedisPoolConfig poolConfig = new JedisPoolConfig();
//最大空闲数
poolConfig.setMaxIdle(50);
//最大连接数
poolConfig.setMaxTotal(100);
//最大等待毫秒数
poolConfig.setMaxWaitMillis(20000);
//*使用配置创建连接池
JedisPool pool = new JedisPool(poolConfig,"127.0.0.1",6379);
//*从连接池中获取单个连接
Jedis jedis = pool.getResource();














 

转载于:https://www.cnblogs.com/it-yansx666/p/9450096.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值