redis学习02-Hash、List数据类型以及常用操作
Hash数据结构
每个Hash对的filed和value都是String类型映射表,适合用于存储对象。hash数据类型最多可以存储2^32-1个键值对
Hash操作
- HSET key field value 可以给hash一次设定一个Hash对或者一次设定多个对 field为hash对的key value为hash对的value
HSET student name kyoleon age 22
- HGET key field 一次只能获取一个hash对的值
HGET student name
HGET student value
- HMSET key field1 value1 field2 value2 可以一次设定多个hash对,目前已经弃用,HSET也可以实现同时给多个hash对赋值
HMSET mStudent name kyoleon age 22 major se
- HMGET key field1 field2 可以一次同时获取多个hash对的值
HMGET mStudent name age major
- HKEYS key 获取指定key的所有hash对的key
HKEYS mStudent
- HVALS key 获取制定key的所有hash对的value
HVALS mStudent
- HINCRBY key field increment 给指定key中hash对的value进行自增或自减(increment为负数则是自减)必须是整数型,如果是浮点型,则用HINCRYBYFLOAT
HINCRBY mStudent age -2
- HSETNX key field value 设定一个hash对的键值对,前提是该键值对不存在
HSETNX mStudent test 123
List数据类型
与java中LinkList类似,可以看作是一个双向链表结构,可以支持正向反向检索。左边是头部,右边是尾部,list中最多可以存储2^32-1个元素
List操作
- LPUSH key value1 value2 可以一次从左边往List中插入多个数据
LPUSH brand msi asus gigabyte
链表的头部在左边,尾部在右边。而LPUSH逐个从左边插入msi第一个插入,asus第二个插入,gigabyte第三个插入,所以目前最左侧(头部)是gigabyte,最右侧(尾部)是msi,类似于数据结构中链表的头插法。
- LPOP key 返回List中左侧第一个元素并将其移除,如果List为空则为nil
LPOP brand
此时得到的是最左侧的gigabyte,现在List中的元素从左到右分别为:asus msi
- RPUSH key value1 value2 从右边往List中插入多个数据
RPUSH brand colorful galax
从右边插入即尾插法,插入的元素在最右侧(尾部)
- RPOP key 返回List右侧第一个元素并将其移除,如果List为空则为nil
RPOP brand
- LRANGE start stop start为开始下标,stop为结束下标 下标从0开始,-1为最后一个下标,-2为倒数第二个下标
获取List中所有的值
LRANGE nvidia 0 -1
或者
LRANGE nvidia -10 10
- BLPOP key timeout 阻塞从左边获取List第一个值,如果不存在则阻塞,通过timeout可以设置超时时间单位为秒,未读出为nil
BLPOP s1 s2 s3 100
然后另开一个客户端
LPUSH s1 123
- RLPOP key timeout 阻塞从右边获取List第一个值,如果不存在则阻塞,通过timeout可以设置超时时间单位为秒,未读出为nil