redis的基本命令

彼时听风 / 2023-08-16 / 原文

通用命令

  • keys pattern 查看符合要求的所有key
  • del (key) [key ...] 删除一个指定的key
  • exists 判断key是否存在
  • expire 给一个key设置有效期,单位是秒,有效期到时该key会被自动删除 (返回-2就是自动删除了)
  • ttl 查看一个key的剩余有效期
  • help [命令] 查看该命令的用法

String类型

  • set key value 添加一个键值对
  • get 根据key获取value
  • mset key value [key value ...] 批量添加key和value
  • mget key [key ...] 获取多个key所对应的值
  • incr key 让一个整数自增1
  • incrby key 让一个整数自增,可以自定义步长
  • incrbyfloat key 浮点数自增,可以自定义步长
  • setnx key value 添加一个String类型的键值对,前提是key不存在,否者不执行添加
  • setex key 有效期 value 添加一个String类型的键值对,并设置有效期

key的结构

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

Hash类型

  • hash类型,也叫散列,其value是一个无序字典,类似于java中的HashMap结构
  • 使用String结构是将对象转化为JSON字符串后存储,很不方便
  • Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD
  • 常见用的命令
    • hset key field value 添加或修改hash类型key的field的值
    • hget key field 获取一个hash类型key的field的值
    • hmset 批量添加多个hash类型key的field的值
    • hmget 批量获取多个hash中的key的field的值
    • hgetall 获取hash类型key中所有的field和value
    • hkeys 获取一个hash类型的key中所有的field
    • hvals 获取一个hash类型中的所有的value
    • hincrby 让一个hash类型key的字段值自增并指定步长
    • hsetnx 添加一个hash类型key的field值,前提是这个fied不存在,否则不执行

List类型

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

set类型

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

SortedSet类型