文章目录

  • 学习Redis的基本命令
    • 1、和key相关的
    • 2、和String相关的
    • 3、和Hash相关的
    • 4、和List相关的
    • 5、和Set相关的
    • 6、和Sorted Set相关的

学习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

学习Redis的基本命令相关推荐

  1. 深入学习Redis(3):主从复制

    原味链接:https://www.cnblogs.com/kismetv/p/9236731.html 前言 在前面的两篇文章中,分别介绍了Redis的内存模型和Redis的持久化. 在Redis的持 ...

  2. Redis数据库教程——系统详解学习Redis全过程

    Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统:     Key-Value Store是当下比较流行的话题,尤其 ...

  3. 深入学习Redis(4):哨兵

    前言 在 深入学习Redis(3):主从复制 中曾提到,Redis主从复制的作用有数据热备.负载均衡.故障恢复等:但主从复制存在的一个问题是故障恢复无法自动化.本文将要介绍的哨兵,它基于Redis主从 ...

  4. 深入学习Redis(1):Redis内存模型

    前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分. 我们使用Redis时,会接触Redis的5种对象类型(字符串 ...

  5. [深入学习Redis]RedisAPI的原子性分析

    在学习Redis的常用操作时,经常看到介绍说,Redis的set.get以及hset等等命令的执行都是原子性的,但是令自己百思不得其解的是,为什么这些操作是原子性的? 原子性 原子性是数据库的事务中的 ...

  6. 【Redis笔记】一起学习Redis | 如何利用Redis实现一个分布式锁?

    一起学习Redis | 如何利用Redis实现一个分布式锁? 前提知识 什么是分布式锁? 为什么需要分布式锁? 分布式锁的5要素和三种实现方式 实现分布式锁 思考思考 基础方案 改进方案 保证setn ...

  7. 深入学习Redis系列文章

    深入学习Redis(1)Redis内存模型 深入学习Redis(2):持久化 深入学习Redis(3):主从复制

  8. 【程序厨】学习 Redis ,可以看看这个

    哈喽,大家好,我是厨子. 昨天收到了一位学弟的私信,想让我写一下 Redis 的学习路线,因为他之前从来没有接触过 Redis ,甚至都没有听过.但是 Redis 是秋招面试重点,想问一下应该如何学习 ...

  9. 拿下阿里三面是后,面试官问我:你是怎么学习Redis的?

    你是怎么学Redis的? 随着面试官的这一句话,我的思绪回到了刚毕业的时候,面试官也是这么问的我; 记得刚毕业时,我是在B站看视频入门的,入个门应付平时的CRUD完全没问题,但当工作中碰到问题的时候, ...

最新文章

  1. 赠书:一本书带你吃透Nginx应用与运维
  2. python量化投资必背代码-量化投资:用Python实现金融数据的获取与整理
  3. Camel In Action 读书笔记 (1)
  4. 如何用ASP.NET加密Cookie数据过程分析
  5. JNDI 和JDBC的区别
  6. 推动Windows的限制:USER和GDI对象 - 第1部分
  7. 临死之前我要写一本《中国哲学史——以自然主义和人道主义的矛盾为视角》...
  8. OFFICE2013工具栏消失后的处理
  9. 电信吉比特光纤猫虚拟服务器设置,吉比特光纤猫内置wifi怎样设置上网
  10. 做嵌入式经典网站!(转)
  11. 快速幂与快速矩阵幂(以大数下的斐波那契数列为例)
  12. [Unity-经验]从购买云服务器到发布Unity WebGL项目
  13. 欧拉定理及扩展(附证明)
  14. 新手看spdlog源码做笔记以及附上简单使用手册
  15. 我是深圳南山的集体户口,要将我老婆的户口随迁入深圳 没有房产,可以办深圳人才中心的集体户口吗
  16. c++正方形的面积源代码
  17. 学习java的培训学校
  18. 10、面试官对于分布式搜索引擎的4个连环炮
  19. 我心目中的伟人—卡尔.马克思
  20. 企信通短信平台接口文档

热门文章

  1. 设置swagger文档自动同步到YApi
  2. cmake:基于MDK(Keil)的Nationstech.N32G45x平台交叉编译工具链定义
  3. weidl x DeepRec:热门微博推荐框架性能提升实战
  4. EDM邮件营销的七个基本原则
  5. 为什么那么多程序员害怕Python?
  6. Python爬虫进阶(十):实战,Scrapy爬取贴吧
  7. 图片添加水印及打印文件
  8. CAD中插入外部参照字体会变繁体_为什么CAD插入外部参照时有些文字消失了?
  9. CCNA学习笔记#01
  10. 查询员工的薪水涨幅情况