1.redis中五种结构操作
redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set
2.redisTemplate.opsForList
redisTemplate.expire(key,10,timeunit):设置过期时间
3.zset https://www.cnblogs.com/wanshi1989/p/5365203.html
4.redis的序列化方式
defaultSerializer 默认序列化策略
key 普通key,非hash
value 普通value,非hash
hashKey hash的filed
hashValue hash的value
5.redisTemplate.opsForValue().
新增一个字符串类型的值,key是键,value是值
获取key键对应的值。
在原有的值基础上新增字符串到末尾。
redisTemplate.opsForValue().append("stringValue","aaa");
截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串。
String cutString = redisTemplate.opsForValue().get("stringValue",0,3);
获取原来key键对应的值并重新赋新值。
String oldAndNewStringValue = redisTemplate.opsForValue().getAndSet("stringValue","ccc")+"";
key键对应的值value对应的ascii码,在offset的位置(从左向右数)变为value。redisTemplate.opsForValue().setBit("stringValue",1,false);
判断指定的位置ASCII码的bit位是否为1。
boolean bitBoolean = redisTemplate.opsForValue().getBit("stringValue",1);
获取指定字符串的长度。
以增量的方式将double值存储在变量中。如果key不存在则会设置为delta大小
以增量的方式将long值存储在变量中。如果key不存在则会设置为delta大小
如果键不存在则新增,存在则不改变已经有的值。
设置变量值的过期时间。
覆盖从指定位置开始的值。
设置map集合到redis。
multiGet(Collection
根据集合取出对应的value值。
(Map extends
K,? extends
V> map)
如果对应的map集合名称不存在,则添加,如果存在则不做修改。
6.redisTemplate.execute(new SessionCallback() :让一个连接直接执行多条语句的方法就是使用SessionCallback,同样作用的还有RedisCallback(new RedisCallBack()),但不常用,是因为需要转换成底层的字节码。
7.RedisOperations.multi(),标记事务块的开始。命令将进入队列,然后可以通过调用exec或discard()取消事务。不支持事务回滚。
8.事务不执行的情况分为
否则即使遇到错误,运行期错误仍会继续执行
9.redis事务是将命令放到queue中取。exec()时才逐条执行。
10.事务开启 multi()
事务执行exec()
事务取消discard()
监控key watch xx
取消监视 unwatch xx
11.spring中的redistemplate执行事务必须放到pipeline中也就是 redisTimplate的execute(sessionCallBack())中执行事务