1.先从存储的数据学习:目前Redis支持的数据库结构类型较多:字符串(String),哈希(Hash),列表(List),集合(Set),有序集合(Sorted Set), Bitmap, HyperLogLog和地理空间索引(geospatial)等,常用前五种。
(1).字符串(String):
使用场景:
A.单点登录,存储登录用户的信息::
key=用户id,value=用户id-随机数-用户名-时间
存值 redisTemplate.opsForValue().set(key, value,time, TimeUnit.SECONDS);
取值 redisTemplate.opsForValue().get(key);
B.计数(浏览次数,请求次数):
增值 redisTemplate.opsForValue().increment(key, n);
减值 redisTemplate.opsForValue().increment(key, -n);
(2).列表(List):
使用场景:
A.消息队列、粉丝/关注列表等:
//绑定操作
BoundListOperations<String, Object> boundValueOperations = redisTemplate.boundListOps(listKey);
//插入数据
boundValueOperations.rightPush();单个插入(left同理)
boundValueOperations.rightPushAll(values);多个插入
//取出数据
boundValueOperations.rightPop();单个取
redisTemplate.opsForList().range(key, 0, -1);全部取
redisTemplate.opsForList().remove(key, count, value);//移除list中value前count个值
(3).哈希(Hash)
使用场景:Hash可以用作对象如商品、经纪人等,包含较多属性的信息
redisTemplate.opsForHash().put(key, item, value);
Map<Object, Object> hmget = redisTemplate.opsForHash().entries(key);//获取所有的值
redisTemplate.opsForHash().get(key, item) //获取单个
(4)有序集合(Sorted Set)
使用场景:排行榜
redisTemplate.opsForZSet().add(K key, V value, double score);//添加
redisTemplate.boundZSetOps(key).incrementScore(value, 1) //加1,-1减
redisTemplate.opsForZSet().reverseRange(key, 0, -1);//倒序
redisTemplate.opsForZSet().range(key, 0, -1);//正序
redisTemplate.boundZSetOps(key).score(value);//获得分数