• 【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

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

  • 相关阅读:
    css------div标签中居中的方式
    RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。
    【MySQL】表复制,去重,合并查询
    学生HTML网页作业作品:HTML+CSS网站设计与实现【红色喜庆邀请函 3页】
    算法:记忆化搜索
    41-面向对象编程(中级部分)-2
    TS中的泛型精简(快速掌握)
    NVIDIA TensorRT 简介及使用
    gerrit系统如何配置访问控制
    双非读者,一举拿下阿里、字节、美团、京东、虾皮offer
  • 原文地址:https://blog.csdn.net/weixin_44484715/article/details/137222283