• redis笔记01-5种数据类型


    1.String是最常用的一种数据类型,普通的key/value存储都可以归为此类。

    • set:设置key对应的值为String类型的value
    • get:获取key对应的值
    aliyun_li:0>set key value
    "OK"
    aliyun_li:0>get key
    "value"
    
    • 1
    • 2
    • 3
    • 4
    • mget:批量获取多个key的值,如果可以不存在则返回null
    aliyun_li:0>mget key key1 key2
     1)  "value"
     2)  "value1"
     3)  null
    
    • 1
    • 2
    • 3
    • 4
    • incr:对key对应的值进行加加操作,并返回新的值
    • incrby:加指定值
    aliyun_li:0>set keynum 1
    "OK"
    aliyun_li:0>incr keynum
    "2"
    aliyun_li:0>incrby keynum 2
    "4"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • decr:对key对应的值进行减减操作,并返回新的值
    • decrby:减指定值
    aliyun_li:0>decr keynum
    "3"
    aliyun_li:0>decrby keynum 3
    "0"
    
    • 1
    • 2
    • 3
    • 4
    • setnx:设置key对应的值为String类型的value,如果key已经存在则返回0
    • setex:设置key对应的值为String类型的value,并设定有效期
    aliyun_li:0>setnx key value
    "0"
    aliyun_li:0>setnx keyNotExists value
    "1"
    aliyun_li:0>setex keyNotExists1 10 value
    "OK"
    aliyun_li:0>ttl keyNotExists1
    "-2"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • getrange:获取key对应value的子字符串
    aliyun_li:0>set key 1234567890
    "OK"
    aliyun_li:0>getrange key 0 1
    "12"
    
    • 1
    • 2
    • 3
    • 4
    • mset:批量设置多个key的值,如果成功表示所有值都被设置,否则返回0表示没有任何值被设置
    aliyun_li:0>mset key1 value key2 value2
    "OK"
    
    • 1
    • 2
    • msetnx:同mset,不存在就设置,不会覆盖已有的key
    aliyun_li:0>msetnx key1 value1 key2 value2 key3 value3
    "0"
    aliyun_li:0>mset key4 v4 key5 v5
    "OK"
    aliyun_li:0>mset key5 v5 key6 v6
    "OK"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • getset :设置key的值,并返回key旧的值
    aliyun_li:0>getset key5 newv5
    "v5"
    aliyun_li:0>get key5
    "newv5"
    
    • 1
    • 2
    • 3
    • 4
    • append:给指定key的value追加字符串,并返回新字符串的长度
    aliyun_li:0>get key 
    "v"
    aliyun_li:0>append key a
    "2"
    aliyun_li:0>get key
    "va"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.Hash

    Hash是一个String类型的field和value之间的映射表。
    redis的Hash数据类型的key(hash表名称)对应的value实际的内部存储结构为一个HashMap。
    Hash特别适合存储对象。
    所存储的成员较少时数据存储为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。
    
    • 1
    • 2
    • 3
    • 4
    • hset:设置key对应的HashMap中的field的value
    • hget:获取key对应的HashMap中的field的value
    • hgetall:获取key对应的HashMap中的所有field的value
    • hlen:返回key对应的HashMap中的field的数量
    aliyun_li:0>hset k f1 "v1"
    "1"
    aliyun_li:0>hset k f2 "v2"
    "1"
    aliyun_li:0>hget k f1
    "v1"
    aliyun_li:0>hgetall k
     1)  "f1"
     2)  "v1"
     3)  "f2"
     4)  "v2"
    aliyun_li:0>hlen k
    "2"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3.List

    lpush:将一个或多个值插入到列表头部
    lrange:获取key对应的list的指定下标范围的元素,-1表示获取所有元素
    lpop:移出并获取列表的第一个元素,并返回该元素
    rpush:在key对应的list的尾部添加一个元素
    rpop:从key对应的list的尾部删除一个元素,并返回该元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    aliyun_li:0>lpush lk v1 v2 v3 v4 v5
    "5"
    aliyun_li:0>lrange lk 0 -1
     1)  "v5"
     2)  "v4"
     3)  "v3"
     4)  "v2"
     5)  "v1"
     aliyun_li:0>lpop lk
    "v5"
    aliyun_li:0>rpush lk v6
    "5"
    aliyun_li:0>lrange lk 0 -1
     1)  "v4"
     2)  "v3"
     3)  "v2"
     4)  "v1"
     5)  "v6"
     aliyun_li:0>rpop lk
    "v6"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    4.Set

    sadd:在key对应的set中添加一个元素
    smembers:获取key对应的set的所有元素
    spop:随机返回并删除key对应的set中的一个元素
    suion:求给定key对应的set并集
    sinter:求给定key对应的set交集
    
    • 1
    • 2
    • 3
    • 4
    • 5
    aliyun_li:0>sadd sk v1 v2 v3 v4 v5
    "5"
    aliyun_li:0>smembers sk
     1)  "v2"
     2)  "v1"
     3)  "v4"
     4)  "v3"
     5)  "v5"
    aliyun_li:0>spop sk
    "v2"
    aliyun_li:0>smembers sk
     1)  "v4"
     2)  "v3"
     3)  "v1"
     4)  "v5"
    aliyun_li:0>smembers sk1
     1)  "v6"
     2)  "v1"
    aliyun_li:0>sunion sk sk1
     1)  "v3"
     2)  "v4"
     3)  "v6"
     4)  "v1"
     5)  "v5"
    aliyun_li:0>sinter sk sk1
     1)  "v1"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    5.SortSet

    zadd :在key对应的zset中添加一个元素
    zrange:获取key对应的zset中指定范围的元素,-1表示获取所有元素
    zrem:删除key对应的zset中的一个元素
    zrangebyscore:返回有序集key中,指定分数范围的元素列表,排行榜中运用
    zrank:返回有序集合中指定成员的索引
    set是通过hashmap存储,key对应set的元素,value是空对象
    sortset是hashmap存储,还加了一层跳跃表
    跳跃表:相当于双向链表,在其基础上添加前往比当前元素大的跳转链接
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    aliyun_li:0>zadd zk 1 v1 2 v2 3 v3 4 v4 5 v5
    "5"
    aliyun_li:0>zrange zk 0 -1
     1)  "v1"
     2)  "v2"
     3)  "v3"
     4)  "v4"
     5)  "v5"
    aliyun_li:0>zrem zk v3
    "1"
    aliyun_li:0>zrange zk 0 -1
     1)  "v1"
     2)  "v2"
     3)  "v4"
     4)  "v5"
    aliyun_li:0>zrangebyscore zk 1 3
     1)  "v1"
     2)  "v2"
    aliyun_li:0>zrank zk v2
    "1"
    aliyun_li:0>zrange zk 0 -1
     1)  "v1"
     2)  "v2"
     3)  "v4"
     4)  "v5"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    6.文章参考链接
    a.https://blog.csdn.net/qq_32617703/article/details/103545990
    b.https://www.runoob.com/redis/strings-mset.html

  • 相关阅读:
    大神都在用的Word文档技巧,你们快来学
    flask 自定义命令 sqllite /SQLAlchemy 简单使用
    模型推荐丨政务大数据项目案例模型分享
    2022 全网最全最新 Java 面试题 - 独家内部教材
    Vue路由和Node.js环境搭建
    【JS】数据结构之队列
    Java面试题(每天10题)-------连载(36)
    java设计模式之适配器模式
    基于css变量轻松实现网站的主题切换功能
    操作系统存储管理
  • 原文地址:https://blog.csdn.net/hecr_mingong/article/details/126131047