美文网首页
Redis 简单知识点

Redis 简单知识点

作者: iceLeono | 来源:发表于2019-10-13 21:44 被阅读0次

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. 抽奖
  • 参与抽奖 SADD key {userId},
  • 查看参与抽奖的所有用户 SMEMBER key。
  • 抽取 count 名中奖者 SRANDMEMBER key [count] / SPOP key [count]【注:SPOP 会将元素从 set 中删除】。
  1. 点赞、收藏、标签等
  • 点赞 SADD like:{消息ID} {用户ID}。
  • 取消点赞 SREM like:{消息ID} {用户ID}。
  • 检查用户是否点赞 SISMEMBER like:{消息ID} {用户ID}。
  • 获取点赞的用户列表 SMEMBERS like:{消息ID}。
  • 获取点赞用户数 SCARD like:{消息ID}。
  1. 微信微博的关注
  • 共同关注:SINTER user1set user2set。
  • 我关注的人也关注他:SISMEMBER userset1 {他}。
  • 我可能认识的人:SDIFF 我关注的人的集合 我关注人中某个人的关注人的集合。

5、zset 的使用

排行榜。

  • 点击新闻
    ZINCRBY hotNews:20190722 1 双宋离婚
  • 展示当日排行前十
    ZREVRANGE hotNews:20190722 0 10 WITHSCORES
  • 七日搜索榜单计算
    ZUNIONSTORE hotNews:20190716-hotNews:20190722 7 hotNews:20190716 hotNews:20190717 ... hotNews:20190722
  • 展示当日排行前十
    ZREVERANGE hotNews:20190716-hotNews:20190722 0 10 WITHSCORES

二、分布式锁

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最常被问到知识点总结

相关文章

  • Redis 简单知识点

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

  • Redis 学习笔记

    Redis 学习笔记 原文:硬核!16000 字 Redis 面试知识点总结,建议收藏! Redis 基础知识 R...

  • Redis学习笔记

    看书时的一些简单总结。每一个知识点展开都可以单写一篇了。。。 Redis数据结构数据类型 redis底层的数据结构...

  • Redis Sentinel与高可用主从复制

    2020年面试复习Redis建议你看这套999元的教程就够了! 知识点 Redis Sentinel是Redis的...

  • 这是一份Redis学习总结,请查收

    最近又复习了一下redis中比较重要的几个知识点,知识点多且碎,在这里做一个简单的总结,便于以后复习。 主流应用架...

  • Redis持久化知识点

    Redis持久化知识点 rdb 和 aof 两种策略 rdb : redis batabaseaof : app...

  • Redis集群

    一、摘要 看完本文你将掌握如下知识点: redis集群的构建方法【redis-5.0.2】 redis早期的版本中...

  • Springboot + Redis 4.x.x 搭建集群

    Redis集群的搭建 简单介绍Redis 简单说一下Redis是什么,在我的理解中redis作为一个高性能的NoS...

  • Redis八连问,你心慌吗?一记定心丸奉上

    今天主要从以下几点讲解redis的相关知识点 1、为什么使用Redis 2.使用Redis有什么缺点 3、单线程的...

  • Docker | redis集群部署实战

    前面已经简单熟悉过redis的下载安装使用,今天接着部署redis集群(cluster),简单体会一下redis集...

网友评论

      本文标题:Redis 简单知识点

      本文链接:https://www.haomeiwen.com/subject/jrrhmctx.html