三.Redis五大类型及方法详细介绍
时间:2022-07-19 11:35 来源:it 作者:IT
1.String类型
1.1 简介:
1.String类型是Redis的最基本的数据类型,一个Redis中的字符串value最多可以是512M
2.String类型是二进制的,表示Redis的String可以包含任何数据,比如jgp图片或者序列化的对象
3.String的数据结构为简单的动态字符串SDS(Simple Dynamic String)是可以修改的字符串,
内部结构类似于java的Arraylist
1.2 常用命令:
#查看所有的key
keys *
#添加键值对
set key value
#同时设置多个键值对
mset key1 value key2 value2
#查询对应key的键值对
get key
#将指定的value追加到key原值的末尾如:(原值为:acb key值为:edf 执行后结果为:abcdef)
append key value
#获取key值的长度
strlen key
#只有key不存在时,才设置key的值为value
strnx key value
#获取值的范围(如:0-2)
getrange key 0(起始位置) 2(结束位置)
#在起始位置后添加相对应的value值
setrange key 3(起始位置) value
#设置过期时间单位为秒
setex key 20(过期时间) value
#用新value换掉对应 key的旧value
getset key value
#同时设置多个键值对,只有key不存在时并且有一个失败则都失败
msetnx key1 value key2 value2
#将key中储存的数字增1 ,只能对数字值操作,如果为空新增值为1
incr key
#将key中储存的数字减1 ,只能对数字值操作,如果为空新增值为-1
decr key
#将key中储存的数字增加相对应的步长值如:(原value值为500,当前步长为20,结果为520)
incrby key 步长
#将key中储存的数字减少相对应的步长值如:(原value值为500,当前步长为20,结果为480)
incrby key 步长
2.List类型(列表)
2.1 简介:
1.Redis列表是简单的字符串列表,按照顺序插入排序,可以添加一个元素到列表的头部(左边)或者
2.尾部(右边)
3.它的底层实际是一个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能较差
4.List的数据结构为快速链表quickList
5.首先在列表元素较少的情况下使用一块内存存储,这个结构是ziplist,也即是压缩列表
5.当数据量比较大时才会改成quicklist
2.2 常用命令:
#从左边插入一个或多个值
lpush key1 value1 value2
#从右边插入一个或多个值
rpush key3 value1 value2
#从左边取出一个值(值在键在,值光键亡)
lpop key
#从右边取出一个值(值在键在,值光键亡)
rpop key
#从key1的右边取出一个值插入到key2左边
rpoplpush key1 key2
#按照下标位置获得对应key的元素(从左到右,0到-1代表取所有的)
lrange key 0(1下标位置) -1(2下标位置)
#获取对应key对应下标的元素
lrange key 0(下标位置)
#获取key的列表长度
llen key
#在value后面插入一个newvalue值(是一个单独的value)
linsert key after value newvalue
#在value前面插入一个newvalue值(是一个单独的value)
linsert key befor value newvalue
#从左边删除n个对应的value值
lrem key n value
#将列表key下标为index的值替换成value
lset key index value
3. Set类型(集合)
3.1 简介:
1.Redis set对外提供的功能与list类似的是一个列表的功能,特殊之处在于set是可以自动排重
的,当你需要储存一个列表数据,又不需要出现重复的数据时,set是一个很好的选择
2.set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的
3.Redis的Set是String类型的无序集合,它底层其实是一个value为null的hash表,所以添加,删
除,查找的复制度都是o(1)
4.Set结构是dict字典,字典是用哈希表实现的
5.java中的HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象Redis
的Set结构也是一样的
3.2 常用命令:
#将一个或多个元素加入到集合key中
sadd key value1 value2
#取出key集合的所有值
smembers key
#判断集合key是否含有该value值,有返回1没有返回0
simember key value
#返回该集合的元素个数
scard key
#删除集合中的某个元素
srem key value value
#随机从该集合吐出一个值(值取完key则不存在)
spop
#随机从该集合中取出n个值,不会从集合中删除
srandmember key n
#把key1集合中的value1从一个集合(key1)移动到另一个集合(key2)
smove key1 key2 value1
#返回两个集合的交集元素
sinter key1 key2
#返回两个并合的交集元素
sunion key1 key2
#返回两个集合的差集元素
sdiff key1 key2
4. Hash类型(哈希)
4.1 简介:
1.Redis hash 是一个键值对集合
2.Redis hash 是一个String类型的field和value的映射表,hash特别适合用于储存对象类似
java里面的Map<String,Object>
3.Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表).当field-value
长度较短且个数较少时,使用ziplist否则使用hashtable
4.2 常用命令:
#给key集合中的field赋键值value
hset key field value
#从key集合field取出value
hget key field value
#批量设置值
hmset key field value1 value2
#查看哈希表key中是否存在该field
hexists key field
#列出该hash集合的所有field
hkeys key
#列出该hash集合的所有value
hvals key
#给哈希表key中的域field的值增加上增量2如:(field为valeu为2,执行后的value结果为4)
hincrby key field 2
#将哈希表中key中的域field的值设置为value(field的value不存在时才生效)
hsetnx key field value
5. Zset类型(有序集合)
5.1 简介:
1.Redis有序集合的zset与普通的set非常相似是一个没有重复元素的字符串集合
2.不同之处,有序集合的每个成员都关联了一个评分(score),被用来按照从最低分到最高分的方式
排序集合中的成员,集合的成员是唯一的但是评分是可以重复的
3.因为元素是有序的,可以很快的根据评分(score)或者次序(position)来获取一个范围的元素
4.访问有序集合的中间元素也是非常快的
5.zset底层使用了两个数据结构:
(1):hash,hash的作用就是关联元素value和权重scope,保障元素value的唯一性,可以通过value找到对应的scope值
(2):跳跃表,跳跃表的目的在于给元素的value排序,根据scope的范围获取元素列表
5.2 常用命令:
#将一个或多个元素及score值加入到有序集合key当中
zadd key score1 value1 score2 value
#返回有序key中下标在star与stop之间的元素
zrange key star stop
#返回有序key中下标在star与stop之间的元素和score(评分)
zrange key star stop withscores
#返回有序集合key中,所有scope值介于min和max之间的成员(包括等于min与max的)
zrangebyscores key min max
#返回有序集合key中,所有scope值介于min和max之间的成员和评分(scope)(包括等于min与max的)
zrangebyscores key min max withscores
#改为同大到小排序
zrevrangebyscores key max min
#为元素的scope增n
zincrby key n value
#删除集合中key指定的value元素
zrem key value
#统计该集合下,min与max内的元素个数
zcount key min/max
#返回改值在集合中的排名,从0开始
zrank key value
(责任编辑:IT)
1.String类型
1.1 简介:
1.String类型是Redis的最基本的数据类型,一个Redis中的字符串value最多可以是512M
2.String类型是二进制的,表示Redis的String可以包含任何数据,比如jgp图片或者序列化的对象
3.String的数据结构为简单的动态字符串SDS(Simple Dynamic String)是可以修改的字符串,
内部结构类似于java的Arraylist
1.2 常用命令:
#查看所有的key
keys *
#添加键值对
set key value
#同时设置多个键值对
mset key1 value key2 value2
#查询对应key的键值对
get key
#将指定的value追加到key原值的末尾如:(原值为:acb key值为:edf 执行后结果为:abcdef)
append key value
#获取key值的长度
strlen key
#只有key不存在时,才设置key的值为value
strnx key value
#获取值的范围(如:0-2)
getrange key 0(起始位置) 2(结束位置)
#在起始位置后添加相对应的value值
setrange key 3(起始位置) value
#设置过期时间单位为秒
setex key 20(过期时间) value
#用新value换掉对应 key的旧value
getset key value
#同时设置多个键值对,只有key不存在时并且有一个失败则都失败
msetnx key1 value key2 value2
#将key中储存的数字增1 ,只能对数字值操作,如果为空新增值为1
incr key
#将key中储存的数字减1 ,只能对数字值操作,如果为空新增值为-1
decr key
#将key中储存的数字增加相对应的步长值如:(原value值为500,当前步长为20,结果为520)
incrby key 步长
#将key中储存的数字减少相对应的步长值如:(原value值为500,当前步长为20,结果为480)
incrby key 步长
2.List类型(列表)
2.1 简介:
1.Redis列表是简单的字符串列表,按照顺序插入排序,可以添加一个元素到列表的头部(左边)或者
2.尾部(右边)
3.它的底层实际是一个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能较差
4.List的数据结构为快速链表quickList
5.首先在列表元素较少的情况下使用一块内存存储,这个结构是ziplist,也即是压缩列表
5.当数据量比较大时才会改成quicklist
2.2 常用命令:
#从左边插入一个或多个值
lpush key1 value1 value2
#从右边插入一个或多个值
rpush key3 value1 value2
#从左边取出一个值(值在键在,值光键亡)
lpop key
#从右边取出一个值(值在键在,值光键亡)
rpop key
#从key1的右边取出一个值插入到key2左边
rpoplpush key1 key2
#按照下标位置获得对应key的元素(从左到右,0到-1代表取所有的)
lrange key 0(1下标位置) -1(2下标位置)
#获取对应key对应下标的元素
lrange key 0(下标位置)
#获取key的列表长度
llen key
#在value后面插入一个newvalue值(是一个单独的value)
linsert key after value newvalue
#在value前面插入一个newvalue值(是一个单独的value)
linsert key befor value newvalue
#从左边删除n个对应的value值
lrem key n value
#将列表key下标为index的值替换成value
lset key index value
3. Set类型(集合)
3.1 简介:
1.Redis set对外提供的功能与list类似的是一个列表的功能,特殊之处在于set是可以自动排重
的,当你需要储存一个列表数据,又不需要出现重复的数据时,set是一个很好的选择
2.set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的
3.Redis的Set是String类型的无序集合,它底层其实是一个value为null的hash表,所以添加,删
除,查找的复制度都是o(1)
4.Set结构是dict字典,字典是用哈希表实现的
5.java中的HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象Redis
的Set结构也是一样的
3.2 常用命令:
#将一个或多个元素加入到集合key中
sadd key value1 value2
#取出key集合的所有值
smembers key
#判断集合key是否含有该value值,有返回1没有返回0
simember key value
#返回该集合的元素个数
scard key
#删除集合中的某个元素
srem key value value
#随机从该集合吐出一个值(值取完key则不存在)
spop
#随机从该集合中取出n个值,不会从集合中删除
srandmember key n
#把key1集合中的value1从一个集合(key1)移动到另一个集合(key2)
smove key1 key2 value1
#返回两个集合的交集元素
sinter key1 key2
#返回两个并合的交集元素
sunion key1 key2
#返回两个集合的差集元素
sdiff key1 key2
4. Hash类型(哈希)
4.1 简介:
1.Redis hash 是一个键值对集合
2.Redis hash 是一个String类型的field和value的映射表,hash特别适合用于储存对象类似
java里面的Map<String,Object>
3.Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表).当field-value
长度较短且个数较少时,使用ziplist否则使用hashtable
4.2 常用命令:
#给key集合中的field赋键值value
hset key field value
#从key集合field取出value
hget key field value
#批量设置值
hmset key field value1 value2
#查看哈希表key中是否存在该field
hexists key field
#列出该hash集合的所有field
hkeys key
#列出该hash集合的所有value
hvals key
#给哈希表key中的域field的值增加上增量2如:(field为valeu为2,执行后的value结果为4)
hincrby key field 2
#将哈希表中key中的域field的值设置为value(field的value不存在时才生效)
hsetnx key field value
5. Zset类型(有序集合)
5.1 简介:
1.Redis有序集合的zset与普通的set非常相似是一个没有重复元素的字符串集合
2.不同之处,有序集合的每个成员都关联了一个评分(score),被用来按照从最低分到最高分的方式
排序集合中的成员,集合的成员是唯一的但是评分是可以重复的
3.因为元素是有序的,可以很快的根据评分(score)或者次序(position)来获取一个范围的元素
4.访问有序集合的中间元素也是非常快的
5.zset底层使用了两个数据结构:
(1):hash,hash的作用就是关联元素value和权重scope,保障元素value的唯一性,可以通过value找到对应的scope值
(2):跳跃表,跳跃表的目的在于给元素的value排序,根据scope的范围获取元素列表
5.2 常用命令:
#将一个或多个元素及score值加入到有序集合key当中
zadd key score1 value1 score2 value
#返回有序key中下标在star与stop之间的元素
zrange key star stop
#返回有序key中下标在star与stop之间的元素和score(评分)
zrange key star stop withscores
#返回有序集合key中,所有scope值介于min和max之间的成员(包括等于min与max的)
zrangebyscores key min max
#返回有序集合key中,所有scope值介于min和max之间的成员和评分(scope)(包括等于min与max的)
zrangebyscores key min max withscores
#改为同大到小排序
zrevrangebyscores key max min
#为元素的scope增n
zincrby key n value
#删除集合中key指定的value元素
zrem key value
#统计该集合下,min与max内的元素个数
zcount key min/max
#返回改值在集合中的排名,从0开始
zrank key value
(责任编辑:IT) |