2. Redis常见命令

2.1 Redis数据结构介绍

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样

Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( http://www.redis.cn/commands.html )可以查看到不同的命令:

也可以使用help命令查询命令:

思考:

Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?
例如,需要存储用户、商品信息到redis,有一个用户id是1,有一个商品id恰好也是1

key的结构

Redis的key允许有多个单词形成层级结构,多个单词之间用’:'隔开,格式如下:

项目名:业务名:类型:id

这个格式并非固定,也可以根据自己的需求来删除或添加词条。
例如我们的项目名称叫 shop,有user和order两种不同类型的数据,我们可以这样定义key:

  • user相关的key:shop:user:1
  • order相关的key:shop:order:1

2.2 Redis的数据结构之字符串

​ String 是redis最基本的数据结构,你可以理解成与Memcached一模一样的类型,一个key对应一个value。String类型是二进制安全的,意思就是redis的String可以包含任何数据。比如jpg图片或者序列化的对象,String类型是Redis最基本的数据结构,String类型的值最大能存储512MB。

存储String常用命令:

1) 赋值

使用set key value 的语法

例如:

  • SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

  • SETEX:添加一个String类型的键值对,并且指定有效期

2) 取值

使用get key方式获取值

例如:

3) 删除

使用del key方式删除

例如:

也可以一次性删除多个key

4) 数值增减

  • incr 自增 默认没有定义的key,对应的value默认为0 加1

​ 如果key对应的value不是一个整数,使用incr会报错:

  • decr 自减 与自增很相似 减1

5) 扩展命令

  • incrby 指定增量值

  • decrby 指定减量的值

  • append 追加字符串,如果没有定义,直接赋值

  • keys *查看redis的所有的key

2.3 Redis的数据结构之哈希

存储的value是一个hash结构,而hash结构就是一个String key和String value组成的map容器。Hash特别适合用于存储对象, Redis中每个hash可以存储232-1键值对(4294967295)。

String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:

​ 存储Hash常用的命令:

  1. 赋值
  • 存储单个字段 hset key fieldname fieldValue

如上代码,表示往redis存储了一个user, user的name的属性对应的值为zhangsan

  • 存储多个字段hmset key fieldname1 fieldValue1 fieldname2 fieldValue2…

HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

  1. 取值
  • 获取指定key的指定的属性的值 hget key fieldName

  • 获取指定key的多个属性值 hmget key fieldName1 fieldName2…

  • 获取指定key的所有属性名和属性值 hgetall key

  1. 删除
  • 删除指定key的一个属性或者多个属性 hdel key fieldName1 [fieldName2 …]
  1. 增加数字
  • hincrby 给某个属性值为整数的属性增加 hincrby key fieldname 增量

  1. 判断key是否存在
  • 判断某个key对应的属性是否存在, 1表示存在,0表示不存在 hexists key fieldname
  1. 获取hash属性的个数
  • 获取hash的属性的个数: hlen key
  1. 获取hash所有属性
  • 获取所有属性的属性名 hkeys key

  • 获取所有的属性的值 hvals key

2.4 Redis的数据结构之List

​ Redis列表是简单的字符串列表,插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边),一个列表最多可以包含2的32方 – 1个元素。

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等

存储List常用的命令

  1. 两端添加
  • 从左边开始添加 lpush key value1 value2 …

  • 获取指定范围的集合元素 lrange key 开始下标 结束下标 注意:-1表示最后下标

  • 从右端开始添加元素(我们比较习惯这种方式) rpush key value1 value2…

  • 往list集合头部插入元素 lpushx key value

  • 往list集合尾部插入元素 rpushx key value

  1. 两端弹出
  • 从list左侧(头部)弹出集合元素 lpop key 删除头部元素

  • 从list 右侧弹出集合元素 rpop key 删除尾部元素

  • 查看list集合的元素的个数 llen key

  • 从list集合的指定的方向删除指定个数的指定元素 lrem key count value

注意: count 表示删除多少个 如果为正数 表示从左边开始,负数表示从右边开始, 0表示删除所有

从左侧删除2个3:

从list右侧删除2个2

删除所有的1

  • 修改指定下标上的值 lset key index value

注意: index 表示下标,从0开始

把下标为2的元素修改为hello

  • 在指定位置插入指定的元素: linsert key before/after value1 value2

注意: before 表示在value1之前插入value2

after 表示在value1之后插入value2

在hello元素之前插入 me

在hello之后插入world

  • 把某个集合的尾部元素弹出并插入到另外一个集合的头部

rpoplpush key1 key2

​ 比如把l1集合的尾部元素弹出,并插入到l2集合的头部

2.5 Redis的数据结构之Set

Set与list类型不同的是,set集合中不允许出现重复的元素,set集合最大可以存储2的32方-1个元素. Set集合使用的场景, 就是在跟踪一些唯一数据.

Set集合常用的方法:

  • 添加set元素 sadd key value1 value2 ….

添加一个set1的集合,该集合包含a,b,c 3个元素

  • 查看set集合的元素 smembers key

查看set1集合的元素

  • 删除set集合中的元素 srem key value1 value2 …

删除set1集合的a元素

  • 判断set集合中某个元素是否存在, 返回1表示存在, 返回0表示不存在 sismember key value

判断set1集合中是否包含b

  • 计算多个集合的差集 sdiff key1 key2 …

注意:上述命令表示,统计出元素在key1存在,但是不存在key2的元素

​ 统计在set2存在,但是不存在与set3的元素:

统计在set3存在,但是不存在与set2的元素:

注意: sdiff 集合的位置不一样,得到的结果也不一样.

  • 计算多个集合的交集, sinter key1 key2 …

统计set2,set3的交集(即存在与set2,又存在与set3的元素)

  • 计算多个集合的并集 sunion key1 key2 …

统计set2和set3集合的并集

  • 计算集合的元素的个数: scard key

统计set2集合的元素个数:

  • 把多个集合的差集存储到一个新的集合中 sdiffstore 新集合名 集合1 集合2…

把set2,set3的差集保存到n1集合:

  • 把多个集合的交集结果存储到新集合 sinterstore 新集合名 集合1 集合2….

把set2,set3集合的交集保存到n2集合中:

  • 把多个集合的并集结果存储到新集合 sunionstore 新集合名 集合1 集合2 …

把set2和set3的并集的结果存储到n3集合中:

2.6 Redis的数据结构之sorted-set/ZSet

Sorted-Set与Set的区别在于:Sorted-Set中的成员在集合中的位置是有序的. Sorted-Set集合使用的场景是:大型在线游戏积分排行榜.

  • 添加元素,包括评分和值, zadd key score1 value1 score2 value2…

添加集合sort1,该集合的元素是a,b,c.对应的评分为 5,4,6

注意:

  1. sorted-set集合的默认排序是按照评分的升序排序

  2. 如果我们继续给集合添加元素,如果集合的元素已经存在,则覆盖,如果元素不存在,那这个元素就添加进去.

  • 查找元素: zrange 开始下标 结束下标

注意: -1表示最后一个 默认是评分的升序排序

查找sort1的所有元素:

如果想把元素的评分也打印出来, 则在后面添加withscores

  • 删除元素 zrem key value1 value2 ….

删除sort1集合中的b元素

  • 查看集合的元素个数 zcard key

查看sort1集合的元素个数:

  • 降序打印集合元素

zrevrange key 开始下标 结束位置 [widthscores]

把sort1集合的元素降序输出:

  • 根据具体评分范围来删除元素

​ zremrangebyscore key min max

**注意:** min 表示最小评分, max表示最大评分, 包括最小和最大评分

​ 删除sort1集合评分在8-12之间的所有元素:

  • 根据评分范围来查找元素

zrangebyscore key min max [withscores] [limit 开始 个数]

注意:

  1. withscores 表示输出评分

  2. limit 用于分页 序号从0开始

​ 查询sort1集合中评分在 4-10之间的元素:

​ 查询sort1集合中评分在 4-10之间的元素:并且输出评分:

​ 查询sort1集合中评分在4-10之间的元素,并且进行分页

  • 给指定的元素加分 zincrby key score value

给sort1集合的c元素加4分

  • 查找指定评分范围的元素个数: zcount key min max

查找sort1集合中评分在4-10之间的元素个数:

2.7 redis keys的通用操作

  • 显示所有的key keys *

  • 查找以指定字符开头 keys 指定字符串*

查找以s开头的

  • 查找以指定字符串开头,后面紧跟任意一位字符 keys 指定字符串?

查找以n开头,后面紧跟一位任意字符:

  • 删除 指定的key del key1 key2…

删除n1 n2 n3

  • 判断key是否存在 1表示存在 0表示不存在 exists key1 key2…

判断n1是否存在,判断set1是否存在:

  • 对key重命名: rename oldKey newKey

把set1的名字设置为set4

  • 设置key的有效时间 expire key time

注意: 以秒作为单位

设置set4 的有效时间为10s

  • 查看key的剩余有效时间 ttl key

注意: -2表示该key不存在

  • 显示key的类型 type key

  • 删除redis中所有的key flushall

Redis:二、Redis常见命令相关推荐

  1. Redis(二) -- redis.conf详解(redis6)

    1. 重要配置: 1.1 大小写不敏感: # Note on units: when memory size is needed, it is possible to specify # it in ...

  2. 认识常见中间件-redis(二)-redis缓存雪崩、缓存击穿、缓存穿透

    缓存雪崩   缓存雪崩指的是大量的请求无法在 Redis 缓存系统中处理,请求全部打到数据库,导致数据库压力激增,甚至宕机.出现该错误的原因主要有两种: 大量热点数据同时过期,导致大量请求需要查询数据 ...

  3. redis(二)redis实战 使用redis进行文章的排序

    2019独角兽企业重金招聘Python工程师标准>>> http://www.beckbi.cn/?p=172 redis实战使用redis进行文章的排序 转载于:https://m ...

  4. Redis:redis通用命令;redis常见数据结构;redis客户端;redis的序列化

    一.redis命令 1.redis通用命令 Redis 通用命令是一些 Redis 下可以作用在常用数据结构上的常用命令和一些基础的命令 常见的命令有: keys 查看符合模板的所有key,不建议在生 ...

  5. Redis常见命令操作

    一.Win版本redis登录操作步骤 1.打开DOS界面进入Redis安装路径 例如:cd C:\Users\sunway\Documents\Tencent Files\1571711197\Fil ...

  6. Redis五大数据类型及常见命令

    1. Redis字符串(String) String是Redis最基本的value类型,一个key对应一个value. String类型是二进制安全的,所有Redis的String对象可以包含任何数据 ...

  7. Redis和Git的常见命令

    Redis和Git的常见命令 key命令 String类型命令 list类型命令 set 类型命令 hash 类型命令 zset类型命令 Git 常 使 用 的 命 令 Git 分支常见命令 Gith ...

  8. redis查询所有key命令_三歪推荐:Redis常见的面试题

    本文公众号来源:科技缪缪作者:科技缪缪本文已收录至我的GitHub 说说Redis基本数据类型有哪些吧 字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽 ...

  9. 【Redis】--- 不同数据结构命令

    [Redis]--- 不同数据结构命令 前言 数据结构 string (字符串) 使用场景 命令 原子计数 list (列表) 使用场景 命令 hash (字典) 使用场景 命令 set (集合) 使 ...

最新文章

  1. 影像组学视频学习笔记(12)-支持向量机(SVM)参数优化(代码)、Li‘s have a solution and plan.
  2. 从算法+数据结构到MVC
  3. C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse
  4. 微型计算机滑动平均值滤波器方程,微型计算机控制技术期末复习2011.ppt
  5. Android百度地图定位
  6. 从 Java 到 Scala(一):面向对象谈起
  7. REST HTTP中的POST PUT GET
  8. 逻辑回归算法背后的数学
  9. 2016第七届蓝桥杯省赛C/C++ B组试题解析整理
  10. 刚刚!阿里云宣布2021要“做厚中台”!有哪些书值得读?
  11. 痞子衡嵌入式:单片机AI的春天已来,ARM Cortex-M55发布了
  12. 原生JS实现一个无缝轮播图插件(支持vue)
  13. 微信公众号迁移函、公证所需资料与流程
  14. 我想转行IT,想找一个培训机构,目前看了优就业、千峰、叩丁狼、黑马、达内等机构,请问哪个好一点?
  15. APISpace 反欺诈(羊毛盾)API
  16. 网站调用百度地图展示位置,调用百度开放平台api 动态静态调用
  17. 单片机diy作品鉴赏,初学者进来膜拜
  18. esp32 Micropython驱动ST7735 1.8寸TFT屏幕 中文显示;时间显示、网络network实时时间获取utptime;urequests、upip等包安装
  19. 【工业智能】用AI来做工业设备的故障诊断,目前还停留在“鸡尾酒疗法”阶段
  20. 疫苗预约系统,疫苗预约管理系统,疫苗预约小程序系统设计与实现

热门文章

  1. oracle的权限授予,Oracle赋予用户sysdba权限
  2. Python小白的数学建模课-A3. 12个新冠疫情数模竞赛赛题与点评
  3. 帕斯卡计算机介绍,帕斯卡计算机:第一台受专利保护的计算机
  4. 【CCF会议期刊推荐】CCF推荐国际学术期刊/会议(计算机科学理论)
  5. plink, vcftool计算等位基因频率(allele frequency,vcf)
  6. 电磁场知识回顾——重要方程,定理
  7. 数学建模竞赛的一些心得体会(全国大学生数学建模首战国一大佬的心得体会)
  8. Google官方控件ShapeableImageView使用
  9. 串口打印中文乱码及注释乱码问题
  10. ERNIE,ERNIE2.0,Transformer-XL,XLNET