redis面试题(1)

目录

1、查看redis版本

2、常见的数据类型(常用五大数据类型)

3、实际应用中的注意事项

4、string 相关

常用命令   

同时设置/获取多个键值?

数值增减?

获取字符串长度?

分布式锁?

具体的应用场景介绍?

5、hash 相关

对应的java的数据结构类型?

常用的命令?

应用场景? 

6、list相关

常用的命令?

应用场景?

7、set相关

常用的命令?

应用场景?

8、Zset相关

常用的命令?

应用场景?


1、查看redis版本

redis- server - v    或者进入redis后输入 info

2、常见的数据类型(常用五大数据类型)

string (字符类型)

list(列表类型)

hash(散列类型)

set(集合类型)

sorted set(有序集合类型,简称zset)

数据结构如何使用,及相关的应用场景?

除了上述5大数据类型,你还知道其他的redis类型吗?

bitmap(位图)

hyperloglog(统计)

GEO ( geospatial-地理空间索引半径查询)

stream

3、实际应用中的注意事项

命令不区分大小写,key是区分大小写

进入redis后,需查找操作命令时, 可以使用       help@类型名词     例如  help @string

4、string 相关

常用命令   

设值   set key value     取值 get key

同时设置/获取多个键值?

设置多个值    mset k1 v1 k2 v2 

获取多个值  mget k1 k2

备注:m的意思其实就是more 可以方便记忆

数值增减?

递增数字  incr key

增加指定的整数   incrby key increment

递减数值    decr key

减少指定的整数   decrby key   decrement

获取字符串长度?

strlen  key

分布式锁?

setnx key value

set key value   [EX  seconds]  [PX milliseconds]  [NX|XX]

EX:  key在多少秒之后过期

PX:  key 在多少毫秒之后过期

NX:  当key 不存在的时候,才创建key,效果等同于setnx

XX:当key存在的时候,覆盖key

具体的应用场景介绍?

商品编号、订单编号采用incr 命令生成,类似平时  点  "赞"   点 "踩"

是否喜欢的文章

5、hash 相关

对应的java的数据结构类型?

Java中对应的结构为   Map<String,Map<Object,Object>>

常用的命令?

一次设置一个字段值    hset key field value

一次获取一个字段值     hget key field

一次设置多个字段值     hmset key field value [field value .....]

一次获取多个字段值   hmget key field [field  ...]

获取所有字段值   hgetall key

获取某个key内的全部数量  hlen

删除一个key  hdel

应用场景? 

简单版的订餐、购物车场景

6、list相关

常用的命令?

向列表左边添加元素   lpush  key  value [value ...]

向列表右边添加元素   rpush key value[ value ...]

查看列表   lrange key start stop

获取列表中元素的个数    llen key

应用场景?

微信文章订阅公众号

两个文章发布, 分别为1 和2 ;

用户关注了这两位作者,只要他们再发布文章,就会放入到该用户的List;

lpush  likearticle:用户id   1  2

查看该用户自己订阅号的全部文章,类似分页,下面0-10就是一次显示10条

lrange likearticle: 用户  0 10

就是用户和自己关注的作者发布的文章进行了绑定。

7、set相关

常用的命令?

添加元素 sadd key member 

删除元素 srem key member

获取集合中的所有元素  smembers key

判断元素是否存在集合中  sismember key member

获取集合中的元素个数  scard  key

从集合中随机弹出一个元素,元素不删除  srandmember key  [数字]

从集合中随机弹出一个元素 ,出一个删一个  spop key [数字]

集合运算    集合的差集运算 A-B  属于A但不属于B的元素构成的集合    sdiff key  [key...]

                     集合的交集运算 A∩B   属于A 同时也属于B的共同拥有的元素构成的集合  sinter key [key ...]

                      集合的并集运算 A∪B 属于A或者属于B的元素合并后的集合 sunion key [key ...]

应用场景?

微信抽奖小程序 

        抽奖时,使用spop 或者srandmember   方法,随机抽取几个中奖的元素,抽一个删一个 或者抽一个不进行删除

       例如 :  1、用户点击立即参与按钮  sadd key 用户id   

                      2、 显示有多少人参与  scard   key   

                      3、 抽奖从set集合中任选n个人    srandmember key 2     随机抽奖2个人,元素不会删除  ;  spop key 3  随机抽奖3个人 ,元素会删除

微信朋友圈点赞 

        例如: 1、用户点赞  sadd key  点赞用户id

                      2、用户取消点赞  srem key 用户id

                      3、显示所有点赞的用户数 smembers  key 

                      4、显示多少人点赞 scard   key   

微博好友关注社交关系  

         使用集合运算,共同关注的好友;我关注的人也关注了他

QQ内推可能认识的人

          有几个共同好友;可能认识的人

8、Zset相关

常用的命令?

向有序集合中加入一个元素和该元素的分数

添加元素 zadd key score member [score member ...]

按照元素分数从小到大的顺序返回索引从start到stop 之间的所有元素  zrange key start stop [withscores]

获取元素的分数  zscode  key member 

删除元素  zrem key member [member ...]

获取指定分数范围的元素  zrangebyscore key min max  [ withscore ][limit offset count]

增加某个元素的分数 zincrby key increment member 

获取集合中元素的数量 zcard key

获取指定分数范围内的元素个数 zcount key min max 

应用场景?

根据商品销售对商品进行排序显示

         1、商品编号001 的销量是9  ,商品编号002 的销量是15      >>>>>>>  zadd 商品排行 9  001   10  002

         2、 有客户再买入2件商品001   >>>>>>>       zincrby 商品排行   2  002

         3、 求商品销量前10名  >>>>>>> zcount 商品排行  0  9  withscores

抖音热搜榜 

         1、点击视频     >>>>>>>   zincrby hotvcr:20210507   1  电影1     ; zincrby hotvcr:20210507   1  电影1  2 电影2

         2、 展示当日前10名  >>>>>>>  zrevrange hotvcr:20210507 0   9  withscores

 

         

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值