七天玩转Redis | 打卡第2天 Redis 五大数据类型
Redis的五大数据类型:String,List,Set,Hash,Zset
String类型:
Redis中最常用的数据类型,但是需要注意不能只会使用String类型,应该根据实际情况灵活的定数数据的数据类型
设置指定key的值:
Redis中给String类型的数据设置指定key的方法就是最基本的设置key-value的方法
语法:SET key value
例:SET k3 v3
获取指定key的值
上面设置基本的数据,需要使用时,如何取出设置的数据?
语法;GET key
例:GET k3
如果没有指定key的值则会返回(nil)若有则返回指定key的value值
返回key中字符串值的子串
这个命令的作用时获取redis中已经存在的字符串的子串,同时可以指定一个下标索引,指定要获取哪一段字符
语法:GETRANGE key start end
Start:为截取的起始下标
End:为截取的终止下标
例:GETRANGE mykey 2
如果要截取某一个字符到最后部分的子串,那么可以直接将最后一个参数设置为-1
如果设置的获取子串的范围比较大,超过了字符串的长度,那么只会返回到字符串的最后一个字符
获取多个给定key的值
与GET命令不同,GET命令只能获取一个key对应的值,而这个命令可以用于获取多个key对应的值,
语法:MGET key1 [key2...] ---> MGET key1 key2
例:MGET mykey mykey1 mykey2
返回key所对应字符串的长度
这个命令的作用就是获取当前索引对应的字符串的长度
语法:STRLEN key
例:STRLEN mykey
设置一个或多个键值对
SET是设置单个键值对的,同时设置多个键值对则需要使用MSET命令
语法:MSET key1 value1 key2 value2
扩展:还有一个命令与MSET命令相似,都能够设置多个键值对,但是必须要保证key不存在,负责所有的key-value都会赋值失败
语法:MSETNX key1 value1 key2 value2
将key中所存储的数值加1
INCR命令会将value的值加1并返回运算后的value的值,但需要注意需要是数才能加1,负责会报错
语法:INCR key
扩展:为指定的key加上指定的增量
语法:INCRBY key increment
Increment为要增加的值
同样会返回改变后的value的值
将key中存储的值减一
语法:DECR key
会返回改变后的value的值
将指定key中存储的值减去指定的值
语法:DECRBY key increment
会返回改变后的value的值
字符串追加
如果key已经存在并且是一个字符串,那么可以使用APPEND命令将指定的value追加到该key原来值的名为,会返回追加之后值的长度
APPEND key value
key为索引
Value为需要追加的字符串
Hash类型
Hash类型是一个String类型的field(字段)和value的映射表,他的作用是可以用来存储我们定义的数据对象,简而言之,一个key下存储了多个key-value的情况

关于HashMap底层实现
设置一个Hash数据
设置Hash数据所使用的命令不是SET,而是HMSET
语法:HMSET key field1 value1 [field2 value2...]
Field为下面存储的一个键值对的键
Value为该键值对应的值
获取指定哈希表中所有的字段和值
语法:HGETALL key
获取存储在哈希表中指定字段的值
语法:HGET key field
Field:value中的key
删除一个或多个哈希表字段
语法:HDEL key field1 [field2...]
获取哈希表中字段的数量
语法:HLEN key
获取哈希表中的所有字段
返回所有的字段,但不会返回字段所对应的值
语法:HKEYS key
获取哈希表中所有的值
返回所有的值,但不会返回值所对应的字段
List类型
列表类型,在redis中列表存储的是一个一个的字符串,按照插入的顺序进行排序,在redis中可以指定实在列表的头部或者尾部插入
将一个或多个元素插入列表表头
在redis中向列表中插入数据的命令是LPUSH,返回值是插入的数据的个数,命令中的L表示left,意思是在表头插入,会返回插入的数据的个数
语法:LPUSH key value1 [value2...]
插入的顺序value1,value2
其在key列表中的排序为value2,value1
将一个或多个元素插入列表尾部
命令中的R表示right,意思是在列表尾部插入
语法:RPUSH key value3 [value4...]
插入的顺序value3,value4
其在key列表中的排序为value3,value4
因此其前两轮插入后,key 列表中的元素排列为[value2,value1,value3,value4]
获取列表长度
获取列表的长度
语法:LLEN key
会返回key的长度
通过索引获取列表中的元素
语法:LINDEX key index
获取key键中下标为index的元素
移除并获取列表第一个元素
LPOP命令可以移除列表中的第一个元素,并且返回该元素的值
语法:LPOP key
获取key列表的第一个值,并删除key列表的第一个值
移除并获取列表最后一个元素
RPOP命令可以移除列表中的最后一个元素,并返回该元素的值
语法:RPOP key
Set集合
Redis中的Set集合和java中的Set集合所表示的含义是一样的,都是无序集合,且集合中的元素是唯一的,不可重复的
向集合中添加一个或多个成员
SADD命令会向集合中添加元素,并且返回插入的成员的个数
语法:SADD key member1 [member2...]
Member1表示要插入的成员
获取集合中成员的个数
SCARD命令会获取集合中成员的个数
语法:SCARD key
返回第一个集合与其他集合之间的差异
SDIFF命令会返回第一个集合相对于其他集合的差异
语法:SDIFF key1 [key2...]
Key1:表示对比的集合
Key2:表示被对比的集合,被对比的可以有多个
会返回:key1于key2而言有哪些不同的成员
返回所给定所有集合的交集
SINTER命令,可以返回所给定的两个或多个集合的交集
语法:SINTER key1 [key2...]
返回集合中的所有元素
语法:SMEMBERS key
ZSet集合
ZSet集合与Set集合类似,也是不允许成员重复,但需要注意,Set集合中成员是无需排列的,而ZSet集合中的成员都是有序排列的
原因是ZSet集合中的每一个元素都会关联一个double类型的分数(也可以理解为权重)redis也正是通过分数来为集合中的成员进行从小到达排序的,所以有序集合的成员是虽然唯一的,但是分数(score)却是可以重复的
向有序集合中添加一个或多个成员
ZADD命令,可以向ZSet集合中插入一个或多个成员,但是如果该成员已经存在,那么就会更新该成员所对应的分数
语法:ZADD key score1 member1 [score2 member2...]
Key 为ZSet集合的索引
Score为插入成员的分数
Member为对应的成员
获取有序集合的成员数
ZCARD命令可以获得指定有序集合的成员变量个数
语法:ZCARD key
计算有序集合中指定区间分数的成员数
语法:ZCOUNT key min max
Min 为区间最小值,max为区间最大值
根据分数返回ZSet集合指定区间内的成员
语法:ZRANGEBYSCORE key min max [WITHSCORES]
[WITHSCORES]:可选,表示是否带上对应的score
移除ZSet集合中的一个或多个元素
语法:ZREM key member1 [member2...]
相关推荐
基于Redis与QQBot SDK的频道打卡机器人.zip
基于Redis与QQBot SDK的频道打卡机器人.zip
学生签到打卡系统源码.zip
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip学生签到打卡系统源码.zip
springboot199疫情打卡健康评测系统.zip
springboot199疫情打卡健康评测系统
课设毕设springboot疫情打卡健康评测系统-LW+源码可运行.zip
课设毕设基于SpringBoot的系统源码可运行
redis使用总结--原理、持久化、常见问题等等
redis小总结,希望与各位大佬一起进步,有需要的可以加我vx:sunshine_java,有空可以一起交流。


