【Redis 一】Redis数据结构(String/Hash/List/Set/Sorted Set)、常用redis终端命令

1. Redis通用命令(终端)

  1. keys:查看符合模版的所有key
  2. del:删除一个指定的key
  3. exists:判断一个key是否存在
  4. expire:给一个key设置有效期,到期后自动删除
  5. ttl:查看一个key的存活时间
    1. 如果设置一个key没有设置过期时间,默认为永久有效

1.1 key层级

Redis的key允许有多个单词形成层级结构,多个单词用 : 隔开,类似于:

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

2. Redis数据结构

Redis是一种键值型(key-value)数据库,key一般是String类型,value类型多种多样,常见的value类型如下:

  1. 基本类型
    1. String
    2. Hash
    3. List
    4. Set
    5. SortedSet
  2. 特殊类型
    1. GEO
    2. BitMap
    3. HyperLog

2.1 String类型

String作为value,主要有三种形式:

  1. 字符串
  2. int
  3. float

主要命令有以下几种:

  1. set:添加或修改一个String类型的键值对
  2. get:根据key获取String类型的value
  3. mset:批量添加多个键值对
  4. mget:根据多个key获取多个String类型的value
  5. incr:让一个key对应的整型String value进行自增
  6. incrby:让一个key对应的整型String value自增并指定步长
  7. incrbyfloat:让一个key对应的浮点型String value数字自增并指定步长
  8. setnx:添加一个String类型的键值对,前提是这个key不存在,否则不执行
  9. setex:添加一个String类型的键值对,并制定有效期

2.2 Hash类型

也叫散列,value是一个无序列表,类似于java中的HashMap<fileld, value>

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

常用命令:

  1. hset key field value:添加或修改hash类型key的filed对应的value
  2. hget key filed:获取一个hash类型key的field的值
  3. hmset:批量添加多个hash类型key的field的值
  4. hmget:批量获取多个hash类型key的field的值
  5. hgetall:获取一个hash类型的key中所有的filed和value
  6. hkeys:获取一个hash类型的key中所有的filed
  7. hvals:获取一个hash类型的key中所有的value
  8. hincrby:让一个hash类型key的field的value自增并指定步长
  9. hsetnx:添加一个hash类型的key的field,前提是这个filed不存在,否则不执行

2.3 List类型

类似于java中的LinkedList,可以看做一个双向链表结构,支持正向检索也支持反向检索

特征:

  1. 有序
  2. 元素可以重复
  3. 插入、删除速度快
  4. 查询速度一般

常用命令:

  1. lpush:向列表左侧插入一个或多个元素
  2. lpop:移除并返回列表左侧第一个元素,没有则返回nil
  3. rpush:向列表右侧插入一个或多个元素
  4. rpop:移除并返回列表右侧第一个元素,没有则返回nil
  5. lrange key start end:返回一段范围内的所有元素
  6. blpop和brpop:和lpop、rpop类似,在没有元素时等待指定时间,而不是直接返回nil
  • 如何用List模拟栈
    • 入口和出口在同一边
  • 如何用List模拟队列
    • 入口和出口在不同边
  • 如何用List模拟阻塞队列
    • 入口和出口在不同边
    • 出队时采用blpop或brpop

2.4 Set类型

类似Java中的HashSet

特征:

  1. 无序
  2. 元素不可重复
  3. 查找快
  4. 支持交集、并集、差集等功能

常用命令:

  1. sadd:向set中插入一个或多个元素
  2. srem:移除set中的指定元素
  3. scard:返回set中元素的个数
  4. sismember:判断一个元素是否存在于set中
  5. smembers:获取set中所有元素
  6. sinter:求两个set之间的交集
  7. sdiff:求两个set之间的差集
  8. sunion:求两个set的并集

2.5 Sorted Set类型

是一个可排序的set集合,功能上上与Java的TreeSet类似,但是底层数据结构是不一样的。Sorted Set中每一个元素都带有一个score属性,可以基于score对元素排序,底层的实现是一个跳表(skipList)加hash表

特征:

  1. 可排序
  2. 元素不重复
  3. 查询速度快

常见命令:

  1. zadd key score member:添加一个或多个元素到Sorted Set,如果已经存在则更新其score
  2. zrem key member:删除Sorted Set中的一个指定元素
  3. zscore key member:获取Sorted Set中指定元素的score
  4. zrank key member:获取Sorted Set中指定元素的排名
  5. zcard key:获取Sorted Set中的元素个数
  6. zcount key min max:统计score在给定范围内所有元素的个数
  7. zincrby key increment member:让Sorted Set中的·1·指定元素自增,步长为指定increment
  8. zrange key min max:按照score排序后,获取指定排名范围内的元素
  9. zrangebyscore key min max:按照score排序后,获取指定score内的元素
  10. zdiff、zinter、zunion:求差集、交集、并集

注意:所有的排名默认都是升序,如果要降序则在命令的z后面加rev即可

相关推荐
DT辰白4 小时前
基于Redis的网关鉴权方案与性能优化
数据库·redis·缓存
木子七5 小时前
Redis-十大数据类型
redis
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭7 小时前
聊聊volatile的实现原理?
java·jvm·redis
灯火不休➴8 小时前
[Redis] 在Linux中安装Redis并连接图形化工具详细过程(附下载链接)
linux·数据库·redis
呆呆小雅12 小时前
C#关键字volatile
java·redis·c#
miss writer12 小时前
Redis分布式锁释放锁是否必须用lua脚本?
redis·分布式·lua
亽仒凣凣14 小时前
Windows安装Redis图文教程
数据库·windows·redis
希忘auto15 小时前
详解Redis的常用命令
redis·1024程序员节
岁月变迁呀1 天前
Redis梳理
数据库·redis·缓存
Code apprenticeship1 天前
怎么利用Redis实现延时队列?
数据库·redis·缓存