建值对:至关于字典的 key 和 value,支持简单的增删改查操做。php
127.0.0.1:6379> ## 单个键值对 127.0.0.1:6379> ## 设置 key 为 name,value 为 laowen 127.0.0.1:6379> set name laowen OK 127.0.0.1:6379> get name ## 获取 "laowen" 127.0.0.1:6379> exists name ## 检查是否存在 (integer) 1 127.0.0.1:6379> del name ## 删除 (integer) 1 127.0.0.1:6379> get name ## 获取 (nil) 127.0.0.1:6379> set name1 boy ## 设置 OK 127.0.0.1:6379> set name2 girl ## 设置 OK 127.0.0.1:6379> mget name1 name2 # 放回一个列表 1) "boy" 2) "girl" 127.0.0.1:6379> ## 批量添加多个 127.0.0.1:6379> mset name1 boy name2 girl name3 unknow OK 127.0.0.1:6379> mget name1 name2 name3 1) "boy" 2) "girl" 3) "unknow" 127.0.0.1:6379> ## 设置过时时间 127.0.0.1:6379> set name a OK 127.0.0.1:6379> get name "a" 127.0.0.1:6379> expire name 5 # 5秒后过时 (integer) 1 127.0.0.1:6379> get name # 不到5秒 "a" 127.0.0.1:6379> get name # 5秒以后 (nil) 127.0.0.1:6379> ## 5秒后过时,set + expire 127.0.0.1:6379> setex name 5 aa OK 127.0.0.1:6379> get name "aa" 127.0.0.1:6379> get name (nil) 127.0.0.1:6379> ## 若是不存在就建立,若是存在就建立不成功 127.0.0.1:6379> setnx name a # 若是不存在就建立 (integer) 1 127.0.0.1:6379> get names "a" 127.0.0.1:6379> setnx name b # 若是存在就建立不成功 (integer) 0 127.0.0.1:6379> get name # 没有改变 "a" 127.0.0.1:6379> ## 计数 127.0.0.1:6379> set age 20 OK 127.0.0.1:6379> get age "20" 127.0.0.1:6379> incr age (integer) 21 127.0.0.1:6379> get age "21" 127.0.0.1:6379> incrby age 5 (integer) 26 127.0.0.1:6379> get age "26"
list 列表,注意它是链表而不是数组。vue
Redis的列表结构经常使用于作异步队列使用。队列是先进先出的数据结构,经常使用于消息队列和异步逻辑处理,会确保元素的访问顺序性。java
当列表弹出最后一个元素以后,该数据结构被自动删除,内存被回收。python
【队列:右进左出】golang
127.0.0.1:6379> ## 添加一个 books 队列 127.0.0.1:6379> rpush books php java net golang (integer) 4 127.0.0.1:6379> ## books 队列尾部继续添加内容 127.0.0.1:6379> rpush books c (integer) 5 127.0.0.1:6379> ## books 队列尾部继续添加内容 127.0.0.1:6379> rpush books python (integer) 6 127.0.0.1:6379> ## books 队列尾部继续添加内容 127.0.0.1:6379> rpush books vue (integer) 7 127.0.0.1:6379> ## 获取 books 队列的长度 127.0.0.1:6379> llen books (integer) 7 127.0.0.1:6379> ## 弹出 books 队列的第一个内容 127.0.0.1:6379> lpop books "php" 127.0.0.1:6379> ## 弹出 books 队列的第一个内容 127.0.0.1:6379> lpop books "java" 127.0.0.1:6379> ## 弹出 books 队列的第一个内容 127.0.0.1:6379> lpop books "net" 127.0.0.1:6379> ## 弹出 books 队列的第一个内容 127.0.0.1:6379> lpop books "golang" 127.0.0.1:6379> ## 弹出 books 队列的第一个内容 127.0.0.1:6379> lpop books "c" 127.0.0.1:6379> ## 弹出 books 队列的第一个内容 127.0.0.1:6379> lpop books "python" 127.0.0.1:6379> ## 弹出 books 队列的第一个内容 127.0.0.1:6379> lpop books "vue" 127.0.0.1:6379> ## 弹出 books 队列的第一个内容 127.0.0.1:6379> lpop books (nil) 127.0.0.1:6379>
【栈:右进右出】redis
127.0.0.1:6379> ## 添加一个 books 栈 127.0.0.1:6379> rpush books php java net golang (integer) 4 127.0.0.1:6379> ## 获取 books 栈的长度 127.0.0.1:6379> llen books (integer) 4 127.0.0.1:6379> ## 弹出栈尾部的内容 127.0.0.1:6379> rpop books "golang" 127.0.0.1:6379> ## 弹出栈尾部的内容 127.0.0.1:6379> rpop books "net" 127.0.0.1:6379> ## 弹出栈尾部的内容 127.0.0.1:6379> rpop books "java" 127.0.0.1:6379> ## 弹出栈尾部的内容 127.0.0.1:6379> rpop books "php" 127.0.0.1:6379> ## 弹出栈尾部的内容 127.0.0.1:6379> rpop books (nil) 127.0.0.1:6379>
【慢操做】shell
【快速列表】数据库
hash 哈希字典数组
相似与字典,一个key对应一个value。适用于 key为标题,value为内容的存储。当hash移除最后一个元素以后,该数据结构被自动删除,内存被回收。缓存
127.0.0.1:6379> ## 设置 name 的哈希、注意 若是字符串中包含空格、须要使用引号 127.0.0.1:6379> hset name wang wangzong (integer) 1 127.0.0.1:6379> hset name wen wenzong (integer) 1 127.0.0.1:6379> hset name zhang zhangzong (integer) 1 127.0.0.1:6379> ## 获取全部 127.0.0.1:6379> hgetall name 1) "wang" 2) "wangzong" 3) "wen" 4) "wenzong" 5) "zhang" 6) "zhangzong" 127.0.0.1:6379> ## 获取长度 127.0.0.1:6379> hlen name (integer) 3 127.0.0.1:6379> ## 获取单个 127.0.0.1:6379> hget name wen "wenzong" 127.0.0.1:6379> ## 更新单个,成功返回0 127.0.0.1:6379> hset name wen wenzongbin (integer) 0 127.0.0.1:6379> hget name wen "wenzongbin" 127.0.0.1:6379> ## 更新单个,成功返回0 127.0.0.1:6379> hset name wen xiaowen (integer) 0 127.0.0.1:6379> hgetall name 1) "wang" 2) "wangzong" 3) "wen" 4) "xiaowen" 5) "zhang" 6) "zhangzong" 127.0.0.1:6379> ## 批量 set 127.0.0.1:6379> hmset name zhao zhaozong li lizong fei feizong OK 127.0.0.1:6379> hgetall name 1) "wang" 2) "wangzong" 3) "wen" 4) "xiaowen" 5) "zhang" 6) "zhangzong" 7) "zhao" 8) "zhaozong" 9) "li" 10) "lizong" 11) "fei" 12) "feizong" 127.0.0.1:6379> hget name wen "xiaowen" 127.0.0.1:6379> ## 删除单个 127.0.0.1:6379> hdel name wen (integer) 1 127.0.0.1:6379> hget name wen (nil) 127.0.0.1:6379>
set 集合
Redis 的集合内部是键值对,是无序的、惟一的。
127.0.0.1:6379> ## 添加一个,不存在,返回1 127.0.0.1:6379> sadd num 100 (integer) 1 127.0.0.1:6379> ## 添加一个,存在, 返回0 127.0.0.1:6379> sadd num 100 (integer) 0 127.0.0.1:6379> ## 添加多个 127.0.0.1:6379> sadd num 99 89 (integer) 2 127.0.0.1:6379> ## 获取全部 127.0.0.1:6379> ## 和插入的顺序是不一致的,由于 set 是无序的 127.0.0.1:6379> smembers num 1) "89" 2) "99" 3) "100" 127.0.0.1:6379> ## 查询某个值是否存在 存在返回 1 127.0.0.1:6379> sismember num 100 (integer) 1 127.0.0.1:6379> ## 查询某个值是否存在 不存在返回 0 127.0.0.1:6379> sismember num 90 (integer) 0 127.0.0.1:6379> scard num ## 获取长度 (integer) 3 127.0.0.1:6379> spop num ## 随机弹出一个 "100" 127.0.0.1:6379> spop num ## 随机弹出一个 "89" 127.0.0.1:6379> spop num ## 随机弹出一个 "99" 127.0.0.1:6379> spop num (nil)
zset 有序列表
127.0.0.1:6379> ## 添加有序列表 zadd key score value 127.0.0.1:6379> ## score:成绩 127.0.0.1:6379> ## key:fan 127.0.0.1:6379> ## value:wen 127.0.0.1:6379> zadd fan 100 wen (integer) 1 127.0.0.1:6379> zadd fan 99 zhang (integer) 1 127.0.0.1:6379> zadd fan 101 li (integer) 1 127.0.0.1:6379> zadd fan 98 zhao (integer) 1 127.0.0.1:6379> zadd fan 97 jin (integer) 1 127.0.0.1:6379> ## zrange key 范围 127.0.0.1:6379> ## 按 score 正序取出;参数为范围 127.0.0.1:6379> zrange fan 0 -1 1) "jin" 2) "zhao" 3) "zhang" 4) "wen" 5) "li" 127.0.0.1:6379> ## zrevrange key 范围 127.0.0.1:6379> ## 按 score 逆序取出;参数为范围 127.0.0.1:6379> zrevrange fan 0 -1 1) "li" 2) "wen" 3) "zhang" 4) "zhao" 5) "jin" 127.0.0.1:6379> ## zcard key 获取总数。至关于 count() 127.0.0.1:6379> zcard fan (integer) 5 127.0.0.1:6379> ## 获取指定 value 的 score 127.0.0.1:6379> ## zscore key value 127.0.0.1:6379> zscore fan wen "100" 127.0.0.1:6379> ## 获取指定 value 的 排名 127.0.0.1:6379> ## zrank key value 127.0.0.1:6379> zrank fan wen (integer) 3 127.0.0.1:6379> ## 获取指定范围的数据 127.0.0.1:6379> ## zrangebyscore key 范围 127.0.0.1:6379> zrangebyscore fan 99 100 1) "zhang" 2) "wen" 127.0.0.1:6379> ## 获取指定范围的数据 127.0.0.1:6379> ## zrangebyscore key -inf inf 【只有value】 127.0.0.1:6379> ## zrangebyscore key -inf inf withscores 【value 和 score 同时返回】 127.0.0.1:6379> ## -inf/inf 表明 infinite,无穷大的意思,∞大 127.0.0.1:6379> zrangebyscore fan -inf inf 1) "jin" 2) "zhao" 3) "zhang" 4) "wen" 5) "li" 127.0.0.1:6379> zrangebyscore fan -inf inf withscores 1) "jin" 2) "97" 3) "zhao" 4) "98" 5) "zhang" 6) "99" 7) "wen" 8) "100" 9) "li" 10) "101" 127.0.0.1:6379> zrange fan 0 -1 1) "jin" 2) "zhao" 3) "zhang" 4) "wen" 5) "li" 127.0.0.1:6379> ## 删除 value 127.0.0.1:6379> ## zrem key value 127.0.0.1:6379> zrem fan wen (integer) 1 127.0.0.1:6379> zrange fan 0 -1 1) "jin" 2) "zhao" 3) "zhang" 4) "li" 127.0.0.1:6379>