首页 > 数据库 >5. Redis常见命令

5. Redis常见命令

时间:2022-11-23 18:00:04浏览次数:67  
标签:元素 field 常见 Redis 命令 set key 类型

1 Redis数据结构介绍

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

  • 基本类型
    • String: hello world
    • Hash: {name: "Jack", age: 21}
    • List: [A -> B -> C -> C]
    • Set: {A, B, C}
    • SortedSet: {A:1, B:2, C:3}
  • 特殊类型
    • GEO: {A:(120.3, 30.5)}
    • BitMap: 011011010100110101
    • HyperLog: 011011010100110101

2 Redis通用命令

帮助 help @generic

常用命令:

  • keys pattern: 查看符合模板的所有 key。不建议在生产环境设备上使用。
  • del key [key ...]
  • exists key [key ...]
  • expire key seconds: 给一个 key 设置有效期,到期后被删除
  • ttl key: 查看一个 key 的剩余有效期

3 String类型

String 类型,也就是字符串类型,是 Redis 中最简单的存储类型。其 value 是字符串,不过根据字符串的格式不同,又可以分为 3 类。

  • string: 普通字符串
  • int: 整数类型,可以做自增、自减操作
  • float: 浮点类型,可以做自增、自减操作

不管是哪种格式,底层都是字节数组形式存储,只不过编码方式不同。字符串类型的最大空间不超过 512m。

命令:

  • set: 添加或修改已经存在的一个 String 类型的键值对
  • get: 获取值
  • mset: 批量添加或修改
  • mget: 批量获取值
  • incr: 指定 key 自增
  • incrby: 指定 key 自增指定值
  • incrbyfloat: 指定 key 视为小数,自增指定值
  • setnx: set no exist
  • setex: set and expire

key 的结构:Redis 的 key 允许有多个单词形成层级结构,多个单词之间用 : 隔开。例如:项目名:业务名:类型:id

这个格式并非固定,也可以根据自己的需求来删除或添加词条。

例如,我们的项目名称叫 heima,有 user 和 product 两种不同类型的数据,我们可以这样定义 key:

  • user 相关的 key: heima:user:1
  • product 相关的 key: heima:product:1    

4 hash类型

Hash 类型,也叫散列,其 value 是一个无序字典,类似于 Java 中的 HashMap 结构。

String 结构是将对象序列化为 JSON 字符串后存储,当需要修改对象某个字段时很不方便。Hash 结构可以将对象中的每个字段独立存储,可以针对单个字段进行 CRUD。

Hash 类型的常见命令:

  • hset key field value: 添加或修改hash类型key的field值
  • hget key field: 获取一个 hash 类型 key 的field 值
  • hmget key field [field ...]: 获取多个字段值
  • hgetall key: 获取一个 hash 类型的 key 中的所有 field
  • hkeys key: 获取一个 hash 类型的 key 中的所有 field
  • hvals key: 获取一个 hash 类型的 key 中的所有 value
  • hincrby key field increment: 让一个 hash 类型 key 的字段自增并指定步长
  • hsetnx key field value: 如果 key 的 field 字段不存在,则设置该字段的值

5 list类型

Redis 中的 List 类型与 Java 中的 LinkedList 类似,可以看作是一个双向链表结构。既可以支持正向索引,也可以支持反向检索。

特征业余 LinkedList 类似:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

List 常见命令:

  • lpush: 向列表左侧插入一个或多个元素
  • rpush: 向列表右侧插入一个或多个元素
  • lpop: 移除并返回列表左侧的第一个元素,没有返回 nil
  • rpop: 移除并返回列表右侧的第一个元素,没有返回 nil
  • lrange: 返回一段角标范围内的所有元素
  • blpop 和 brpop: 与 lpop 和 rpop 类似,只不过 b 表示 block,在没有元素时等待指定时间,而不是直接返回 nil

6 set类型

Redis 的 Set 类型与 Java 中的 HashSet 类型,可以看作是一个 value 为 null 的 HashMap。因为也是一个 hash 表,因此具备与 HashSet 类似的特征。

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

set 的常见命令:

  • sadd key member ...: 向 set 中添加元素
  • srem key member ...: 移除 set 中的指定元素
  • scard key: 获取 set 中元素数量
  • sismember key member: 判断一个元素是否存在于 set 中
  • smembers key: 获取 set 中的元素
  • sinter key1 key2 ...: 求多个集合的交集
  • sunion key1 key2 ...: 求多个集合的并集
  • sdiff key1 key2 ..: 求多个集合的差集

7 SortedSet类型

Redis 的 SortedSet 是一个可排序的 set 集合,与 java 中的 TreeSet 类似,但底层数据结构差别很大。SortedSet 中的每一个元素都带有一个 score 属性,可以基于 score 属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。

SortedSet 具备以下特性:

  • 可排序
  • 元素不重复
  • 查询速度快

因为 SortedSet 的可排序特性,经常被用来实现排行榜这样的功能。

  • zadd key score member: 添加或修改元素
  • zrem key member: 删除元素
  • zscore key member: 查询分数
  • zrank key member: 查询排名
  • zcard key: 查询元素个数
  • zcount key min max: 统计 score 值在指定范围内的所有元素个数
  • zincrby key increment member: 自增
  • zrange key min max: 按 score 排序后,获取指定排名范围内的元素
  • zrangebyscore key min max: 按 score 排序后,获取 score 范围内的元素
  • zdiff / zinter / zunion

降序在 z 后加 rev

 

 

 

   

标签:元素,field,常见,Redis,命令,set,key,类型
From: https://www.cnblogs.com/dyl0/p/16919189.html

相关文章

  • 6. python和Redis交互
    1安装包pipinstallredis2引入模块fromredisimport*这个模块中提供了StrictRedis对象(Strict严格),用于连接redis服务器,并按照不同类型提供了不同方法,进行交互操作......
  • 9. Redis封装使用
    可直接使用如下代码,对redis进行直接的使用。封装代码:importredisimportosdefsingleton(cls):  """单例模式装饰器"""  instances={}  defget_......
  • redis问题
    redis的数据类型:redis有5中常用的数据类型:String:结构底层是一个简单地动态字符串(simpledynamicstringSDS),支持扩容,存储字符串。List:存储线性有序且可重复的元素,底......
  • 核心交换机配置DHCP服务,这篇文章有详细的步骤和命令
    动态主机配置协议DHCP(DynamicHostConfigurationProtocol)是一种用于集中对用户IP地址进行动态管理和配置的技术。 下面我为大家整理了非常详细的配置步骤和命令,仅供......
  • 3. Redis配置
    Redis的配置信息在/etc/redis/redis.conf下。查看:sudovi/etc/redis/redis.confbind:改为0.0.0.0表示任意IP可以访问daemonize:改为yes,表示后台运行requirepa......
  • Linux下rz命令上传文件失败处理
    在Linux服务器上使用rz命令上传文件时,有时候会遇到文件上传失败,此时会在当前目录下生成一堆大小为0的乱码文件,如下图所示:这些文件有时候rm命令也无法删除,下面提供两种通......
  • 一些关于命令行的随笔
    最近喜欢上了命令行。用的软件不是windows模拟dos的cmd哦,我用的是cmder关于数据库在命令行打开mysql的方法:首先在cmd命令行中输入“netstartmysql”;然后输入“mysql-......
  • docker常用命令
    一段时间不用docker后,发现对于一些基本命令都忘记了。。这里记录一下防止以后忘记dockerimages查看所有本地主机上的镜像dockersearchxxx查找镜像dockerpull xxx......
  • Opencore 常见kext驱动详解
    常用驱动AirportBrcmFixup:用于修复不能免驱的博通无线网卡AlpsT4USB:是VoodooI2C的插件,为AlpsT4USB触控板提供原生苹果手势支持AppleALC:用于驱动ALC芯片声卡,和Voodo......
  • 主机与虚拟机之间的通信(ping命令)
    最近总是纠结于主机和虚拟机之间互ping的问题,当然了ping的统才能进行通信,就是这样一个神奇的命令。一开始不知道是怎么回事,经过自己的实践。把自己的小结总结如下,分享给大家......