五种基本的数据结构:string,list,hash,set,zset
string
最大存储512Mb,小于1M时每次扩容两倍,大于1Mb时,每次扩容只会多扩1Mb的空间。
127.0.0.1:6379> set name hello
OK
127.0.0.1:6379> get name
"hello"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> mset name1 xiaohei name2 xiaobai
OK
127.0.0.1:6379> mget name1 name2
1) "xiaohei"
2) "xiaobai"
expire命令
127.0.0.1:6379> set name hello
OK
127.0.0.1:6379> expire name 5
(integer) 1
127.0.0.1:6379> get name
"hello"
127.0.0.1:6379> get name
(nil)
setex = set + expire
setnx 只有值不存在时才会创建
127.0.0.1:6379> help setex
SETEX key seconds value
summary: Set the value and expiration of a key
since: 2.0.0
group: string
127.0.0.1:6379> help setnx
SETNX key value
summary: Set the value of a key, only if the key does not exist
since: 1.0.0
group: string
计数,范围在signed long最大值和最小值之间
127.0.0.1:6379> set name 1
OK
127.0.0.1:6379> incr name
(integer) 2
127.0.0.1:6379> decr name
(integer) 1
list
存储与取出的方向一致则是栈,反之则是队列,当弹出最后一个元素时,list被回收。 类似于java的LinkeList,插入快时间复杂度是O(1),查找慢O(n)。
rpush
lpush
rpop
lpop
blpop/brpop b代表blocking,表示在没有数据读的时候会阻塞休眠
map
hset books name xiaohei
hmset books name java age 30
hget books name
hmget books name age
hincrby books age 10
set
相当于Java中的HashSet 最后一个元素被移除后,数据结构被自动删除,内存被回收
sadd books java
sadd books java golang
smembers books 注意和插入顺序并不一致,因为set是无序的
sismember books java 查询某个元素是否存在
scard books 统计books的元素个数
spop books 弹出一个元素
zset 有序列表
相当于HashMap和SortedSet的结合体 最后一个元素被移除后,数据结构被自动删除,内存被回收
zadd books 9.0 java
zadd books 8.9 python
zrange books 0 1 //按score排序(升序)列出,参数区间为排名范围
zrevrange books 0 -1 //按score降序输出
zrange books 0 -1 # 0 -1表示输出所有的元素
zrange books 0 0
zcard books 相当于count
zscore books java
127.0.0.1:6379> zscore books python
"8.9000000000000004"
zrem books python #删除元素
zrank books java 获取元素排名
zrangebyscore books -inf 8.91 withscores #根据分值区问(-∞, 8.91]遍历zset,并返回分值。 inf代表infinite,无穷大的意思。