【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即可

相关推荐
Kagol9 小时前
macOS 和 Windows 操作系统下如何安装和启动 MySQL / Redis 数据库
redis·后端·mysql
hzulwy9 小时前
Redis常用的数据结构及其使用场景
数据库·redis
ashane131411 小时前
Redis 哨兵集群(Sentinel)与 Cluster 集群对比
redis
Y第五个季节12 小时前
Redis - HyperLogLog
数据库·redis·缓存
Justice link12 小时前
企业级NoSql数据库Redis集群
数据库·redis·缓存
爱的叹息15 小时前
Spring Boot 集成Redis 的Lua脚本详解
spring boot·redis·lua
morris1311 天前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
爱的叹息1 天前
spring boot集成reids的 RedisTemplate 序列化器详细对比(官方及非官方)
redis
weitinting1 天前
Ali linux 通过yum安装redis
linux·redis
纪元A梦1 天前
Redis最佳实践——首页推荐与商品列表缓存详解
数据库·redis·缓存