一、hash操作
数据结构:key:{k1:v1, k2:v2, k3:v3} 类似Python中的字典
如:info : {name: lina, age: 22, sex: F}
hset key k1 v1 设置/创建(字典)
hget key k1 获取key1 中 k1对应的值
批量设置获取
hmset key k2 v2 k3 v3 同时设置多个k-value
hmget key k1 k2 k3 同时获取多个值
获取所有keys
hkeys key
获取所有values
hvals key
查看键值下面的k个数
hlen key
127.0.0.1:6379> hset info name lina
(integer) 1
127.0.0.1:6379> hget info name
"lina"
127.0.0.1:6379> hmset info age 22 sex F
OK
127.0.0.1:6379> hmget info name age sex
1) "lina"
2) "22"
3) "F"
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379> hvals info
1) "lina"
2) "22"
3) "F"
127.0.0.1:6379> hlen info
(integer) 3
1.2 hash 下几个常用方法
删除key 下指定键值
hdel key k1 k2 k3 可删除一个或多个
判断key 下指定键值是否存在
hexists key field
127.0.0.1:6379> hdel info sex
(integer) 1
127.0.0.1:6379> hexists info sex
(integer) 0
在hash操作中一个key 能存200亿条数据,如果使用 hmget key 命令,那占用内存,和速度就太慢了
所以使用扫描,类是python 中生成器一样的方式:
hscan key cursor match pattern COUNT count
:para key: 那个hash
:para cursor: 游标,从哪开始扫描 一般从 0
:para match: pattern 模糊匹配,正则表达
:para COUNT: count匹配几个,输入数字就好
127.0.0.1:6379> hscan info 0 match na* count 1
1) "0"
2) 1) "name"
2) "lina"
二、列表操作
- lpush key value1 value2 value3 创建一个列表,并从左往右依次放入数据(FILO)
- rpush key value value2 同理上面,右往左放入(FIFO)
lrange key start stop 取列表中的值,从start 到stop 0 -1为取全部
llen key 查看列表长度
127.0.0.1:6379> lpush list 1 2 3
(integer) 3
127.0.0.1:6379> rpush list 1 2 3
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
4) "1"
5) "2"
6) "3"
127.0.0.1:6379> llen list
(integer) 6
2.2 往列表中插入元素,删除元素等
linsert key where refvalue value 往key中对应的refvalue标杆值的 where(before 和 after)前后后两个选项,插入数据value
:para key: 对应列表
:para where: before 或 after 意思在标杆值之前或之后
:para refvale: 标杆值
:para value: 将要插入的值
注意:如果有重复值,以找到的第一个为标杆
(integer) 6
127.0.0.1:6379> linsert list before 1 insert
(integer) 7
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "insert"
4) "1"
5) "1"
6) "2"
修改指定索引的值:
lset key index value
删除指定位置的值:
lrem key count value 参数count 为删除几个,value为 删谁
从列表左边获取一个值返回,并删除它
lpop key
获取指定索引的值
lindex key index
删除指定范围之外的所有元素
ltrim key start end
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "insert"
4) "1"
5) "1"
6) "2"
7) "3"
127.0.0.1:6379> lset list 1 'lina'
OK
127.0.0.1:6379> lrem list 2 1
(integer) 2
127.0.0.1:6379> lpop list
"3"
127.0.0.1:6379> lrange list 0 -1
1) "lina"
2) "insert"
3) "2"
4) "3"
127.0.0.1:6379> ltrim list 0 1
OK
127.0.0.1:6379> lrange list 0 -1
1) "lina"
2) "insert"
127.0.0.1:6379> lindex list 1
"insert"
2.3 几个不常用的命令,但很厉害
把列表一右边pop 添加到列表2 lpush 左边
rpoplpush key1 key2
左边删除一个数据,如果列表为空,就等待超时时间,在超时时间内,列表中出现了元素理解删除。像队列中的queue一般
blpop key timeout
三、set集合
创建一个集合:
sadd key value value value value
查看集合中的成员:
smembers key
返回集合中的元素个数:
scard key
差集:
sdiff key1 key2
将两个集合中的差集放入第三个集合
sdiffstore new_dest key1 key2
交集:
sinter key1 key2
并集:
sunion key1 key2
检查元素是否为集合中成员:
sismember key value
spop key
sscan key cursor match pattern
四、有序集合
zadd key 权重值 member 权重值2 member2 权重值3 member3
zrange key start end 可选参数为 withscores
zcount key min max 统计权重最小到最大
127.0.0.1:6379> zadd zz 1 shiqi 2 zengyue 3 yuan
(integer) 3
127.0.0.1:6379> zrange zz 0 -1
1) "shiqi"
2) "zengyue"
3) "yuan"
127.0.0.1:6379> zrange zz 0 -1 withscores
1) "shiqi"
2) "1"
3) "zengyue"
4) "2"
5) "yuan"
127.0.0.1:6379> zcount zz 1 2
(integer) 2
zrank key member 获取成员排名
zrem key member member2 删除指定成员