redis常见的数据结构String、hash、List、Set、zSet
String为常见的数据结构,类似java中的map key value
hash 可运用到数据分段存储 降低大key带来的风险
购物车场景: cart:{用户ID} F{商品ID} V{商品数量} 类似 cat:0001 10002:2
添加商品 hset cart:1001 10023 1
增加数量 hincrby cart:1001 10023 1
商品种类数 hlen cart:1001
删除商品 hdel cart:1001
获取所有商品 hgetall cart:1001
List 可作为数组使用
Set
set 获取列表数据
从列表中随机获取某个对象
stringRedisTemplate.opsForSet().add("uSet","u1","u2","u3","u4");
System.out.println(stringRedisTemplate.opsForSet().members("uSet"));
System.out.println(stringRedisTemplate.opsForSet().randomMember("uSet"));
stringRedisTemplate.opsForSet().add("like:ms1","m1","m2","m3","m4");
stringRedisTemplate.opsForSet().remove("like:ms1","m2");
System.out.println(stringRedisTemplate.opsForSet().isMember("like:ms1", "m1"));
System.out.println(stringRedisTemplate.opsForSet().size("like:ms1"));
可记录用户信息 点赞的场景
还可以模拟 集合中的 交集 并集和 差集的场景 (差集为集合1 减去 集合2 和集合3的并集)
社交平台 共同关注的人 和 可能认识的人
stringRedisTemplate.opsForSet().add("like:ms1","m1","m2","m3","m4");
stringRedisTemplate.opsForSet().add("like:ms2","m5","m6","m3","m4");
stringRedisTemplate.opsForSet().add("like:ms3","m7","m8","m9","m4");
//交集 共同关注的人 第二个参数为主参数
System.out.println(stringRedisTemplate.opsForSet().intersect("like:ms1", "like:ms2"));
//差集 可能认识的人 第二个参数为主参数
System.out.println(stringRedisTemplate.opsForSet().difference("like:ms2", "like:ms1"));
zSet 有序集合 集合对象的带分值 可用于 热搜数量统计排名
stringRedisTemplate.opsForZSet().add("2020msg","ms12334",0);
stringRedisTemplate.opsForZSet().add("2020msg","ms2345",0);
stringRedisTemplate.opsForZSet().add("2020msg","ms223",9);
stringRedisTemplate.opsForZSet().add("2020msg","ms222",7);
stringRedisTemplate.opsForZSet().add("2020msg","ms224",5);
//检索分值前三名 分值最高 倒序查询
System.out.println(stringRedisTemplate.opsForZSet().reverseRange("2020msg",0,2));
//自增
stringRedisTemplate.opsForZSet().incrementScore("2020msg","ms12334",1);