Redis 简单知识点

2019-10-13  本文已影响0人  iceLeono

redis是一个高性能的key-value数据库,其支持丰富数据类型,支持string,hash,list,set,sorted set等。

一、五种数据类型的使用

1、string 的使用

在实际项目中,最简单的是 SET key value ,其中 value 设为 json 序列化的字符串,但这样在取数据时,会导致只需要 value 中的一部分数据时,需要将整个 json 字符串全部取出来,然后再解析查找,会显得比较麻烦。我们可以使用 MSET 和 MGET 进行批量操作,例如 MSET user:1:name zhangsan user:1:age 18。
此外,文章的浏览次数也可以使用。INCR article:readcount:{文章id} 和 GET article:readcount:{文章id}

2、hash 的使用

上面用户的存储也可使用hash ,HMSET user 1:name zhangsan 1:age 18 和 HMGET user 1:name 1:age 。
商品购物车 ,以用户id为key,商品id为field,数量为value。
HSET cart:{用户id} {商品id} 初始数量。增加商品数量 HINCRBY cart:{用户id} {商品id} 1。购物车商品总数量可用 HLEN cart:{用户id}。

3、list 的使用

微博微信信息流。当一个大V发送完消息后,后台逐渐给每个关注人的列表都添加新的信息。LPUSH msg:{你自己的用户id} 消息id。当你关注的另一个大V发送消息时,也重复LPUSH msg:{你自己的用户id} 新消息id。查询消息使用 LRANGE msg:{你自己的用户id} 0 10。

4、set 的使用

  1. 抽奖
  1. 点赞、收藏、标签等
  1. 微信微博的关注

5、zset 的使用

排行榜。

二、分布式锁

1、使用 Redis 的 setnx 命令

简单实现的话,使用 setnx 设置个变量(锁)并且有超时时间,任务完成时删掉这个变量释放掉锁。


2、使用redisson

  1. 引入pom文件
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.11.4</version>
</dependency>
  1. 代码配置
@Bean
public Redisson redisson(){
  //此为单机模式
  Config config = new Config();
  config.userSingleServer().setAddress("redis://127.0.0.1:6379").setDatabase(0);
  return (Redisson)Redisson.create(config);
}
  1. 实际使用
RLock redisLock = redisson.getLock(lockKey);
//注意下方上锁代码会开启一个新线程,来保证锁不会因为超时时间而过期。也可不设置时间,使用默认的30秒。
redisLock.lock(30, TimeUnit.SECONDS);
//...
redisLock.unlock();

扩展:分布式锁可使用zookeeper

扩展链接:
Redis 命令参考
面试题Redis最常被问到知识点总结

上一篇 下一篇

猜你喜欢

热点阅读