*与?的区别
127.0.0.1:6379[2]> keys *1 1) "kabc1" 2) "k1" 127.0.0.1:6379[2]> keys ?1 1) "k1"exists:判断key是否存在(存在为1,不存在为0)
127.0.0.1:6379[2]> exists k1 (integer) 1 127.0.0.1:6379[2]> exists kabc1 (integer) 1 127.0.0.1:6379[2]> exists kabc2 (integer) 0expire:语法:expire key secords 作用:设置key的生存周期,超过时间,key会自动删除。单位是秒 返回值:设置成功返回数字1,其他情况返回是0
127.0.0.1:6379[2]> expire k1 5 (integer) 1 127.0.0.1:6379[2]> get k1 "v1" 127.0.0.1:6379[2]> get k1 (nil) 127.0.0.1:6379[2]> set 1590000 3568 OK 127.0.0.1:6379[2]> expire 1590000 15 (integer) 1 127.0.0.1:6379[2]> get 1590000 "3568" 127.0.0.1:6379[2]> get 1590000 (nil)ttl:查看存活时间 返回值: -1:没有设置key的生存周期,key永不过期 -2:key不存在 数字:key的剩余时间,单位为秒
127.0.0.1:6379[2]> set k1 v1 OK 127.0.0.1:6379[2]> ttl k1 (integer) -1 127.0.0.1:6379[2]> get aa (nil) 127.0.0.1:6379[2]> ttl aa (integer) -2 127.0.0.1:6379[2]> expire k1 60 (integer) 1 127.0.0.1:6379[2]> ttl k1 (integer) 54 127.0.0.1:6379[2]> ttl k1 (integer) 46 127.0.0.1:6379[2]> ttl k1 (integer) 32del:删除key
127.0.0.1:6379[2]> set game lol OK 127.0.0.1:6379[2]> get game "lol" 127.0.0.1:6379[2]> del game (integer) 1 127.0.0.1:6379[2]> get game (nil)type:判断key的类型(如果key不存在,则返回none)
127.0.0.1:6379[2]> set k2 v2 OK 127.0.0.1:6379[2]> type k2 string 127.0.0.1:6379[2]> type aaa none(key–value(string)) set:设置key和value get:通过key获得value
mset:设置多组key和value mset key value [key value key value …]mget 通过多组key获得value 127.0.0.1:6379[2]> mset a a1 b b1 c c1 d d1 OK 127.0.0.1:6379[2]> get k1 (nil) 127.0.0.1:6379[2]> mget a b c d e f 1) "a1" 2) "b1" 3) "c1" 4) "d1" 5) (nil) 6) (nil) incr:加一decr:减一注意:操作key的对应的value必须能转化为数字。 127.0.0.1:6379[2]> set count 123 OK 127.0.0.1:6379[2]> get count "123" 127.0.0.1:6379[2]> incr count (integer) 124 127.0.0.1:6379[2]> incr count (integer) 125 127.0.0.1:6379[2]> get count "125" 127.0.0.1:6379[2]> decr count (integer) 124 127.0.0.1:6379[2]> decr count (integer) 123 127.0.0.1:6379[2]> get count "123" append:追加对应key的value值 127.0.0.1:6379[2]> set name zhl OK 127.0.0.1:6379[2]> append name 123 (integer) 6 127.0.0.1:6379[2]> get name "zhl123" strlen:返回key值的长度 127.0.0.1:6379[2]> strlen name (integer) 6 setex:将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆写旧值。 127.0.0.1:6379[2]> setex zhl 8000 600 OK 127.0.0.1:6379[2]> ttl zhl (integer) 7996 setnx:将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。 127.0.0.1:6379[2]> setnx aaa aaaa (integer) 1 127.0.0.1:6379[2]> setnx aaa bbbb (integer) 0 getset:将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 127.0.0.1:6379[2]> getset aaa ccc "aaaa" 127.0.0.1:6379[2]> get aaa "ccc"hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
key value user string 类型的 field 和 value 的映射表 user345 name 张三 age 20 address 四川 hset:将哈希表 key 中的域 field 的值设为 value ,如果 key 不存在,则新建 hash 表,执行赋值,如果有 field ,则覆盖值。hget:获取哈希表 key 中给定域 field 的值 127.0.0.1:6379> hset user345 name zhangsan (integer) 1 127.0.0.1:6379> hset user345 age 20 (integer) 1 127.0.0.1:6379> hset user345 address sichuan (integer) 1 127.0.0.1:6379> hget user345 name "zhangsan" 127.0.0.1:6379> hget user345 age "20" 127.0.0.1:6379> hget user345 address "sichuan" hmset:同时将多个 field-value (域-值)设置到哈希表 key 中,此命令会覆盖已经存在的 field,hash 表key 不存在,创建空的 hash 表,执行 hmset.hmget:获取哈希表 key 中一个或多个给定域的值 127.0.0.1:6379> hmset user345 name lisi address beijing OK 127.0.0.1:6379> hmget user345 name age address 1) "lisi" 2) "20" 3) "beijing" hlen:获取hash key 的长度 127.0.0.1:6379> hlen user345 (integer) 3 127.0.0.1:6379> hset user345 tel 56789 (integer) 1 127.0.0.1:6379> hlen user345 (integer) 4 hgetall:获得hash所有的属性和值 127.0.0.1:6379> hgetall user345 1) "name" 2) "lisi" 3) "age" 4) "20" 5) "address" 6) "beijing" 7) "tel" 8) "56789" hkeys:获得hash所有的属性 127.0.0.1:6379> hkeys user345 1) "name" 2) "age" 3) "address" 4) "tel" hvals:获得hash所有的value 127.0.0.1:6379> hvals user345 1) "lisi" 2) "20" 3) "beijing" 4) "56789" hdel:删除hash某个属性 127.0.0.1:6379> hdel user345 address name (integer) 2 127.0.0.1:6379> hgetall user345 1) "age" 2) "20" 3) "tel" 4) "56789" hexists:判断hash是否包含某个属性` 127.0.0.1:6379> hexists user345 name (integer) 0 127.0.0.1:6379> hexists user345 age (integer) 1list是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
key value shop 电视 冰箱 洗衣机 通过这个列表:可以表示的数据结构有栈和队列。 队列:一边进,一边出。 现实中:买票、银行排号。 lpush:从左边放入元素到listrpush;从右边放入元素到listllen:显示list的长度 127.0.0.1:6379> lpush vip vip1vip2 vip3 (integer) 2 127.0.0.1:6379> lpush vip vip1vip2 vip3 vip4 (integer) 5 127.0.0.1:6379> lpush vip vip1 vip2 vip3 (integer) 8 127.0.0.1:6379> llen vip (integer) 8 127.0.0.1:6379> rpush p1 p2 p3 (integer) 2 127.0.0.1:6379> llen vip (integer) 8 127.0.0.1:6379> rpush vip p1 p2 p3 (integer) 11 127.0.0.1:6379> llen vip (integer) 11//vip3 vip2 vip1 vip4 vip3 vip1vip2 vip3 vip1vip2 p1 p2 p3
lpop: 从左边取出元素到listrpop:从右边取出元素到list 127.0.0.1:6379> lpop vip "vip3" 127.0.0.1:6379> lpop vip "vip2" 127.0.0.1:6379> rpop vip "p3" 127.0.0.1:6379> rpop vip "p2" 127.0.0.1:6379> llen vip (integer) 7//a5 a4 a3 a2 a1
lrange:列出list中指定元素 127.0.0.1:6379> lpush vip a1 a2 a3 a4 a5 (integer) 5 127.0.0.1:6379> lrange vip 0 3 1) "a5" 2) "a4" 3) "a3" 4) "a2" 127.0.0.1:6379> lrange vip 3 4 1) "a2" 2) "a1" 127.0.0.1:6379> lrange vip 0 4 1) "a5" 2) "a4" 3) "a3" 4) "a2" 5) "a1" lindex:获得指定位置元素的值 127.0.0.1:6379> lindex vip 0 "a5" 127.0.0.1:6379> lindex vip 3 "a2" 127.0.0.1:6379> lindex vip 300 (nil) lset:设置指定位置元素的值 127.0.0.1:6379> lset vip 1 vip1 OK 127.0.0.1:6379> lrange vip 0 -1 1) "a5" 2) "vip1" 3) "a3" 4) "a2" 5) "a1" linsert: 语法:linsert key BEFORE|ALFTER pivot value 作用:将值 value 插入到列表 key 当中位于值 pivot 之前或之后的位置。key 不存在,pivot不在列表中,不执行任何操作。 返回值:命令执行成功,返回新列表的长度。没有找到 pivot 返回 -1, key 不存在返回 0。 127.0.0.1:6379> lrange vip 0 -1 1) "a5" 2) "vip1" 3) "a3" 4) "a2" 5) "a1" 127.0.0.1:6379> linsert vip before vip2 vip_plus (integer) -1 127.0.0.1:6379> lrange vip 0 -1 1) "a5" 2) "vip1" 3) "a3" 4) "a2" 5) "a1" 127.0.0.1:6379> linsert vip after a3 vip_plus (integer) 6 127.0.0.1:6379> lrange vip 0 -1 1) "a5" 2) "vip1" 3) "a3" 4) "vip_plus" 5) "a2" 6) "a1" lrem: count 的值可以是以下几种: count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。 count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。 count = 0 : 移除表中所有与 value 相等的值。 127.0.0.1:6379> lpush vip 1 2 3 4 5 6 7 8 9 (integer) 9 127.0.0.1:6379> lrange vip 0 -1 1) "9" 2) "8" 3) "7" 4) "6" 5) "5" 6) "4" 7) "3" 8) "2" 9) "1" 127.0.0.1:6379> lrem vip 3 2 (integer) 1 127.0.0.1:6379> lrange vip 0 -1 1) "9" 2) "8" 3) "7" 4) "6" 5) "5" 6) "4" 7) "3" 8) "1" 127.0.0.1:6379> lrem vip -1 4 (integer) 1 127.0.0.1:6379> lrange vip 0 -1 1) "9" 2) "8" 3) "7" 4) "6" 5) "5" 6) "3" 7) "1" 127.0.0.1:6379> lrem vip 0 7 (integer) 1 127.0.0.1:6379> lrange vip 0 -1 1) "9" 2) "8" 3) "6" 4) "5" 5) "3" 6) "1"Set 是 string 类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据.
key value food 炒饭 炒面 炒蛋 特点: 1.无序 2.元素不可重复指令
sadd:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略,不会再加入。 127.0.0.1:6379> sadd set01 abc 123 haha abc abc 123 (integer) 3 scard:获取集合里面的元素个数 127.0.0.1:6379> scard set01 (integer) 3 smembers:列出set中所有的元素 127.0.0.1:6379> smembers set01 1) "haha" 2) "123" 3) "abc" sismember:判断是否包含某个元素 127.0.0.1:6379> sismember set01 abc (integer) 1 127.0.0.1:6379> sismember set01 aaa (integer) 0 srem:删除元素 127.0.0.1:6379> srem set01 abc 123 (integer) 2 127.0.0.1:6379> smembers set01 1) "haha"srandmember: 语法:srandmember key [count] 作用:只提供 key,随机返回集合中一个元素,元素不删除,依然在集合中; 提供了 count时,count 正数, 返回包含 count 个数元素的集合, 集合元素各不相同。 count 是负数,返回一个 count 绝对值的长度的集合, 集合中元素可能会重复多次。 返回值:多个元素的集合
比如微信的:骰子、石头剪刀布
127.0.0.1:6379> sadd set01 a b c d e f (integer) 6 127.0.0.1:6379> srandmember set01 3 1) "f" 2) "b" 3) "a" 127.0.0.1:6379> srandmember set01 3 1) "d" 2) "e" 3) "a" 127.0.0.1:6379> srandmember set01 3 1) "c" 2) "e" 3) "a" 127.0.0.1:6379> srandmember set01 -3 1) "haha" 2) "f" 3) "d"有序集合zset 和集合set一样也是 string 类型元素的集合,且不允许重复的成员。 不同的是 zset 的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中的成员进行从小到大的排序。 可以理解为set的升级版
key value food 炒饭 1000 炒面 1500 炒蛋 1555 特点: 1.不能重复 2.无序,但是因为有分数的概念,可以根据分数进行排序。 常用:各大排行榜 zadd:添加 127.0.0.1:6379[2]> zadd zset01 100 za 120 lisi 89 wangwu (integer) 3 zcard:查看集合中元素个数 127.0.0.1:6379[2]> zcard zset01 (integer) 3 zscore:查看成员的分数 127.0.0.1:6379[2]> zscore zset01 lisi "120" 127.0.0.1:6379[2]> zscore zset01 zhangsan (nil) 127.0.0.1:6379[2]> zscore zset01 za "100" zrange:排序方式为分数由小到大 127.0.0.1:6379[2]> zrange zset01 0 -1 1) "wangwu" 2) "za" 3) "lisi" 127.0.0.1:6379[2]> zrange zset01 0 -1 withscores 1) "wangwu" 2) "89" 3) "za" 4) "100" 5) "lisi" 6) "120" zrevrange:排序方式为分数由大到小 127.0.0.1:6379[2]> zrevrange zset01 0 -1 1) "lisi" 2) "za" 3) "wangwu" 127.0.0.1:6379[2]> zrevrange zset01 0 -1 withscores 1) "lisi" 2) "120" 3) "za" 4) "100" 5) "wangwu" 6) "89" zrank:返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。 排名以 0 为底,也就是说, score 值最小的成员排名为 0 。 127.0.0.1:6379[2]> zrank zset01 za (integer) 1 127.0.0.1:6379[2]> zrank zset01 lisi (integer) 2 127.0.0.1:6379[2]> zrank zset01 wangwu (integer) 0 zrevrank:返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。 排名以 0 为底,也就是说, score 值最大的成员排名为 0 。 127.0.0.1:6379[2]> zscore zset01 wangwu "89" 127.0.0.1:6379[2]> zrevrank zset01 wangwu (integer) 2 zrem:删除元素 127.0.0.1:6379[2]> zrem zset01 za (integer) 1 127.0.0.1:6379[2]> zscore zset01 za (nil)