StringRedisTemplate 一些记录(1)

本文介绍了StringRedisTemplate的基本概念,如其与RedisTemplate的区别、序列化方式。重点讨论了其在实际应用中的操作,包括opsForSet、opsForValue、操作自增值的方法以及opsForZSet的使用。同时,文章提到了keys和scan命令的注意事项,指出keys可能导致的数据库锁住问题,建议在大量数据时使用scan命令进行安全的key扫描。
摘要由CSDN通过智能技术生成

1.一些概念

1-StringRedisTemplate继承RedisTemplate;
2-两者数据不共通,StringRedisTemplate只管StringRedisTemplate里面的数据,RedisTemplate只管RedisTemplate中的数据;
3-两者序列化类不同,RedisTemplate使用的是JdkSerializationRedisSerializer,存入数据会将数据先序列化成字节数组然后在存入Redis数据库;StringRedisTemplate使用的是StringRedisSerializer。

2.使用

1. opsForSet

@Autowired
private StringRedisTemplate redisTemplate;

//向变量中批量添加值。
redisTemplate.opsForSet().add(Constant.DEVICE_OPT_PREFIX, deviceId);
            redisTemplate.expire(Constant.DEVICE_OPT_PREFIX, 5, TimeUnit.MINUTES);
//获取变量中的值
Set<String> deviceIds = redisTemplate.opsForSet().members(Constant.DEVICE_OPT_PREFIX);

2. opsForValue 

@Autowired
private StringRedisTemplate redisTemplate;

Set<String> deviceIdOptKeys = redisTemplate.keys(Constant.DEVICE_OPT_PREFIX.concat("*"));
Set<String> failDeviceIds = new HashSet<>();

if (ObjectUtils.isNotEmpty(deviceIdOptKeys)){
        failDeviceIds = deviceIdOptKeys.stream().map(x->x.substring(Constant.DEVICE_OPT_PREFIX.length())).collect(Collectors.toSet());
}

if (failDeviceIds.contains(deviceId)){
        redisTemplate.opsForValue().append(Constant.DEVICE_OPT_PREFIX + deviceId,"#");
} else {
        redisTemplate.opsForValue().set(Constant.DEVICE_OPT_PREFIX + deviceId,"#",30,TimeUnit.MINUTES);
}

redisTemplate.delete(Constant.DEVICE_OPT_PREFIX + deviceId);
// 设置键、值和过期时间
redisTemplate.opsForValue().set(Constant.DEVICE_OPT_PREFIX
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值