学习Redis的基本命令

学习Redis的基本命令

在Redis难道有多个数据库?

在redis中默认是16个数据库、怎么在这些数据库之间 进行切换呢?

这个数据库的下标 0----15

默认选中的是 第0号数据库 默认数据存储也是存储到第0号数据库的

1、和key相关的

keys * :查看当前数据库中存在的键
select 数据库的下标 选中某一个数据库
del key :删除某一条数据
exists key :判定某一个key是否存在
token需要使用
所有缓存的地方都需要使用这个命令
expire key 过期时间 :这个命令可以用在前后分离项目中token设置的过期时间 过期之后 key会被删除
ttl key :查看这个key剩余的时间
场景:这个主要就是key如果是需要续期的话 就可以使用这个命令
返回-2 这个key不存在
返回-1 表示没有过期时间永远都有效
move key 数据库索引 :将一个key–value移动到另外一个数据库中去
场景:一般情况下做数据库的迁移(基本用的很少)
randomkey 随机返回一个key
```

2、和String相关的
set key  value   :在数据库中设置一个键值对的数据
get key          :获取某一个值

在这里插入图片描述

场景:存储对象的数据

set user:1:userName xiaobobo

set user:1:password 123

set user:1:count 300

get user:1:userName 只取用户名

mset k v k1 v1  :同时设置多个键值对
mget k v k1 v1  :通古斯获取多个键值对的数据

场景:存储一个对象的数据

mset user:1:userName xiaobobo user:1:password 123 user:1:count 100

mget user:1:userName user:1:password user:1:count

incr key  ;自增
decr key  :自减
incrby key 步长  :一次性增加多少
decrby key 步长  :一次性减去多少

场景:多的很

在这里插入图片描述

在这里插入图片描述

怎么使用?

set weibo-readcount-{文章id} 0

incr weibo-readcount-1101

setnx key value:表示的是如果这个key不存在的话  那么就设置这个键值对

场景:主要是用在分布式的锁上面

在这里插入图片描述

3、和Hash相关的
hset 集合的名字  键的名字  值
hget 集合的名字  键的名字  值
hlen 集合的名字  键的名字  获取当前集合中值的数量
hdel 集合的名字  键的名字
hincrby 集合的名字 键的名字 增加的数量
hgetall 集合的名字  直接实现全选的功能
hexists 集合的名字   键的名字  (判断某个人是否有购物车)
hkeys 集合的名字  获取当前这个人的所有的购物车中的商品
hvals 集合的名字   取出当前集合中所有的值

场景:购物车

在这里插入图片描述

存购物车的数据

hset cart:100 100001 1
hset cart:100 10998 2

命令

hmset 集合的名字   键的名字  值的名字   键的名字  值的名字
hmget 集合的名字  键的名字 键的名字

场景:存储对象数据

在这里插入图片描述

hmset user 1:userName xiaobobo 1:password 123

hmset user 2:userName xiaowangzi 2:password 123

hmget user 2:userName 2:password

hmset dept 部门的id:部门的字段 值

4、和List相关的
lpush  键  值  :表示的是将一个或者多个值 插入到列表的表头
lpop  键      :移除并返回这个列表的头元素   
rpush 键  值  :在列表的表位添加元素
rpop 键   从列表的右侧弹出元素
lrange 键 start  stop
BLPOP 键:从列表的表头弹出一个元素  如果列表的表头没有元素  那么就阻塞等待
BRPOP 键:从列表的右侧弹出一个元素 如果没有元素 那么就阻塞等待

说明图

在这里插入图片描述

场景:栈的玩法

LPUSH + LPOP

场景:构造队列

LPUSH +RPOP

场景:阻塞队列

LPUSH+BRPOP

实际的应用场景

在这里插入图片描述

波波老师关注了 Modtech 还关注了 微博开放平台

假设现在 Mobtech发消息 消息的id : 10086

List结构来进行设计 要怎么设置

需求:波波老师现在关注了两个平台 这两个平台在发送消息的时候 只是发送给关注了这个平台的用户 现在 mobtech要发送消息给波波老师了 那么现在mobtech发送的这个消息 使用list结果如何来进行设计 就能够 让波波老师在登陆这个系统的时候 就自动的取到这个消息呢?

lpush mobtech:msg:{波波老师的id} 发送这条数据的id

lpush mobtech:msg:{刘磊老师的id} 发送这条数据的id

lpush weibo:msg:{波波老师id} 发送这条的id

lrange mobtech:msg:{波波老师id} 0 50

5、和Set相关的

命令

sadd  键  值  :就是向set集合中添加一个值  (可以用在点赞上)
srem  键  值  :删除这个键中的某一个值  (可以用在取消点赞上)
sismember 键  值  检查某一个值是否在这个集合中存在
smembers key :表示的是获取这个集合中的所有数据
srandmemebr key count :从集合中选出count个元素 ,元素不从key中删除(值是随机的)
spop key count :从集合中选中count个元素 元素从集合中删除
sinter key :做做交集运算
sinterstore desternation key:将交集的结果存入新的集合
sunion key :并集运算
sunionstore desternation key :将并集的结果存入这个集合
sdiff key :差集运算
adiffstore desternation key :将差集的结果存入这个集合
scard key  :计算当前set集合中的元素的个数

适用场景

在这里插入图片描述

我要使用sadd 来存储当前这哥心情的点赞

怎么设计这个点赞才是最合理的?

点赞

sadd weixin:like:{消息的id} 用户的id

sadd 集合的名字 集合的值

取消点赞

srem weixin:like:10010 10 取消某一个人的点赞

检查某一个人是否点过赞

sismember weixin:10010 120 :检查id是120的用户是否点赞过这条消息

获取点赞的用户列表

smembers weixin:like:10010

获取当前点过赞的所有的用户

scard weixin:like:10010

多个集合之间运算

在这里插入图片描述

场景:

在这里插入图片描述

场景

​ 波波老师 :关注了boboSet= { liulei dashixing}

​ 刘磊老师:关注了liuleiSet={bobo dashixing yangjianhui hehanyu}

​ 杨建辉老师: 关注了yangjianhuiSet={dashixing bobo liulei chengjunbo}

​ 达世鑫老师{liulei yangjianhui bobo}

问题来了:

​ 波波老师和杨建辉老师 共同关注的人

​ 交集

​ sinter boboSet yangjianhuiSet

​ 波波老师关注的人 也关注了他(刘磊)

​ 1、找到波波老师关注了哪些人(除去刘磊老师)

​ dashixing liulei

​ 2:找到dashixing老师集合

​ dashixinSet liuleiSet

​ 3、只需要判断达世鑫老师的集合里面是否有 刘磊老师

​ sismember dashixinSet liulei

​ sismember liuleiSet liulei

​ bobo老师可能认识的人

​ 和其他集合求差集就可以了(谁?)

​ 1、获取波波老师关注的集合

​ smembers boboSet

​ 2、波波老师关注的人的集合 和 波波的集合求差集

​ sdiff dashixingSet boboSet

​ sdiff liuleiSet boboSet

6、和Sorted Set相关的

​ 备注:Sorted Set是自动根据打分实现排序的

​ 看命令

zadd 集合的名字  打分  键的名字   :向Sorted Set中添加一个数据
zrange 集合的名字 开始的位置  结束的位置  获取集合中某一个区间的值
zincrby 集合的名字 加的分值  key的名字   //给某一个值添加分值
zrevrank 集合的名字 键的值   :查看当前数据的排名
zrem 集合的名字 键的名字     :删除某一条数据
zscore 集合的名字  键的名字 
zcount 集合的名字   开始  结束   :获取得分在某一个区间类的数据的个数

在这里插入图片描述

场景:

​ 就是给做最热商品 或者 人气商品的时候用

什么是最热商品 和 人气商品?

最热商品:购买数最多的 人气商品(点击量最多的、收藏量最多)

//假设最热商品

1:只要商品产生购买

​ zadd good:hot 10 商品id

​ 又产生了购买

​ 加分:zincrby 集合的名字 加的分值 key的名字

​ 张三在直播平台看自己礼物的排名?

​ zrevrank 集合的名字 键的值 :查看当前数据的排名

​ 产品下架了不卖了?

​ zrem good:hot goodId1 :删除某一条数据

​ 人气得分(热度)

​ 热度:弹幕的数量(算法)+不同礼物不同的得分+播放的时间点+粉丝数量

​ zscore good:hot goodId3


希望大家关注我一波,防止以后迷路,有需要的可以加我Q讨论互相学习java ,学习路线探讨,经验分享与java Q:2415773436

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值