https://blog.csdn.net/Butterfly_resting/article/details/89668661
http://redisdoc.com/hash/hset.html
String
mset 批量插入
setnx 可以实现分布式锁
INCR:将key中存储的数字加1,redis的线程模型为单线程,天生可以防止并发问题,会把请求放到队列中,按照队列的先后顺序执行。如果使用mysql数据库,则需要考虑并发问题。
String应用场景:
hash
value里面又有key和value
cart:1001 购物车 10088 商品id 1 商品数量
hgetall 获取购物车中所有商品数量
购物车,如果做集群而且用的是hash数据结构,则根据hash函数计算key值,每次计算出的结果都是一个固定的值,所以一个购物车中的数据会存放在一个相同的slot中,无法进行分片存储。
List
Set
sinter 求交集 sunion 并集 sdiff 求差集
分布式锁
当时分布式系统的时候,这种代码是有问题的。锁不住,因为每台服务器上都有一个tomcat。
模拟高并发场景,使用jmeter
解决方法:
再完善一下:
继续完善,因为原来的代码在高并发下,会出现后一个线程删除前一个线程加的锁的情况。
市面上有一个比较成熟的解决这方面的问题的一个方案:redisson
因为主从问题而导致锁失效的问题: redis无法很好地解决 可以使用zookeeper