Redis数据类型常用方法

什么是redis

  • redis 键值支持的数据类型有:字符串类型、散列类型(哈希)、列表类型、集合类型、有序集合类型
  • redis 的主要用于实现缓存、队列、消息订阅等功能
  • redis 支持主从复制功能,实现高可用
  • redis 可以对内存中的数据进行持久化

redis工具介绍

  • redis-server:redis 服务端,用于启动 redis 服务
  • redis-cli:redis 命令行客户端,可以直接连接到 redis 服务,提供了丰富的键值操作的命令
  • redis-benchmark: redis 提供的性能测试工具
  • redis-check-aof:aof 文件修复工具
  • redis-check-dump:adb 文件检查工具
  • redis-sentinel:哨兵服务器,可以启动哨兵用于监控 redis 服务的运行情况

键值 (字符串类型的键允许存放的最大数据类型为 512 M

  • SET key value # 设置键值
  • GET key # 获取键值
  • INCR numKey # 让键值递增,返回递增后的数值,键值非数字会报错,不存在时默认为 0
  • DECR numKey # 自减
  • STRLEN key # 返回键值的字符串长度
  • MSET/MGET # 和 GET/SET 类似,批量设置和获取

哈希 (也叫散列一种字典类型,存储了字段和字段值的映射关系)

  • HSET key field value # 设置散列类型 key 对应的对象的某个属性
  • HGET key field # 获取散列类型 key 对应的对象的某个属性
  • HMSET key field value ... # 批量设置散列类型 key 对应的多个属性的值
  • HMGET key field ... # 批量获取散列类型 key 对应的多个属性的值
  • HGETALL key # 获取散列类型中某个 key 对应的所有属性及值,也就是整个对象
  • HEXISTS key field # 判断散列类型中某个字段是否存在
  • HSETNX key field value # 判断散列类型中某个字段是否存在,不存在则赋值
  • HDEL key field ... # 删除散列类型中对象里的一个或者多个字段
  • HKEYS key # 获取散列类型中对象里的所有字段属性名
  • HVALS key # 获取散列类型中对象里的所有字段属性对应的值
  • HLEN # 获取散列类型中对象里的字段数量

列表

  • LPUSH key value1 value2... # 向列表左边增加多个元素
  • RPUSH key value1 value2... # 向列表右边增加多个元素
  • LPOP key # 从列表左边弹出一个元素
  • RPOP key # 从列表右边弹出一个元素
  • LLEN key # 获取列表中元素个数,时间复杂度为O(1)
  • LRANGE key start stop # 获取列表中从 start 到 stop 之间的元素,从 0 开始索引
  • LTRIM key start end # 删除列表中指定范围以外的所有元素

集合(列表类型可以存储一个有序的字符串列表,常用的操作是向列表两头添加元素或者列表某个片段,列表类型使用双向链表实现,访问首尾元素的速度非常快)

  • SADD key value1 value2... # 向集合中加入多个元素
  • SREM key value1 value2... # 从集合中删除多个元素
  • SMEMBERS key # 获取集合中的所有元素
  • SISMEMBER key value # 判断元素是否存在集合中
  • SDIFF key1 key2... # 对多个集合求差集运算
  • SINTER key1 key2... # 对多个集合求交集运算
  • SDIFFSTORE destination key1 key2... # 对多个集合求差集运算,并将结果存储在 destination 集合中
  • SUNION key1 key2... # 对多个集合求并集运算
  • SCARD key # 获取集合中的元素个数
  • SRANDMEMBER key count # 随机从集合中获取 count 个不相同的元素
  • SPOP key # 随机从集合中弹出一个元素

有序集合(集合类型的元素是无序的、唯一的,常用的操作是向集合中加入某个元素或者删除某个元素、判断某个元素是否存在,大部分操作的时间复杂度基本都为 O(1))

  • ZADD key score member ... # 向有序集合中添加元素,如果存在则更新元素对应的 score
  • ZSCORE key member # 获取有序集合中某个元素的分数
  • ZRANGE key start stop # 获取有序集合中排名在某个范围的元素,结果集从小到大排序
  • ZREVRANGE key start stop # 获取有序集合中排名在某个范围的元素,结果集从大到小排序
  • ZINCBY key increment member # 增加有序集合中某个元素的分数
  • ZCARD key # 获取有序集合中元素的数量
  • ZCOUNT key min max # 指定分数范围内元素的个数
  • ZREM key member... # 删除有序集合中一个或者多个元素
  • ZRANK key member # 获取某个元素的排名
  • ZREMRANGEBYRANK key start stop # 删除有序集合中某个排名范围的元素
  • ZREMRANGEBYSCORE key min max # 删除有序集合中某个score范围的元素

过期时间

  • EXPIRE key seconds 用于设置键的过期时间,单位为秒
  • PEXPIRE key milliSeconds 单位为毫秒
  • TTL key 用于获取键的过期时间,返回 -1 表示过期时间为永久,-2 表示键值不存在
  • PTTL key 获取过期时间,单位为毫秒
  • PERSIST key 用于清空过期时间,设为永久
  • SET 命令同样会清空过期时间

通用的命令

  • CONFIG set loglevel warning # 动态修改 redis 的部分配置
  • CONFIG get loglevel # 获取 redis 的部分配置
  • SELECT 1 # 更改数据库编号,默认从 0 开始
  • EXISTS key # 判断某个键值是否存在,存在返回 1, 否则返回 0
  • DEL key1 key2 # 可以删除一个或者多个键,返回删除的个数
  • KEYS "user*" | xargs | del # 实现通配符匹配删除多个键值
  • TYPE key # 获取键值的数据类型,string | hash | list | set | zset(有序集合)

HyperLogLog

  • 来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
  • 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
  • PFADD test"redis" #添加指定元素到 HyperLogLog 中
  • PFCOUNT test #命令返回给定 HyperLogLog 的基数估算值

GEO

  • 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增
  • GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" #添加地理位置的坐标
  • GEODIST Sicily Palermo Catania #计算两个位置之间的距离
  • geopos # 获取地理位置的坐标
posted @ 2021-02-22 14:50  惊风破浪的博客  阅读(139)  评论(0编辑  收藏  举报