String类型
说明:
(1) 本篇博客,介绍redis五种数据类型中的String类型;
(2) redis操作String类型数据,有几个命令:set,get,mset,mget,del,incr,decr,incrby,decrby;这些命令都比较简单,以后会大量使用;
redis存储的数据格式不止有String一种,而是五种;本篇博客主要介绍String类型;
一:String字符串类型简介
1.String字符串类型简介;
● 对于绝大部分数据,都可以使用String类型来处理;
● 如果一个String很大,那么就会影响从内存中提取该数据的效率;
2.字符串命令;
在【Redis常用命令】也接触了get命令和set命令;
二:String类型的命令演示
set命令;
get命令;
String字符串类型是redis最常用的类型、最重要的类型,也是最简单的类型;
mset命令;
mset命令可以简化我们的工作量;
mget命令;
del命令;
redis命令行中,也可以使用【clear】来清空屏幕;
在日常开发中,有一种特殊的使用场景:计数器;
计数器就是也给不断自增的(或自减)的变量;
incr(increment的前四个字母)命令:将指定的数字自增1
如果某个value不是“数字”(或者说,不可以转型为数字),如果使用incr命令,就会失败;(这个情况,同样适用于decr,incrby,decrby)
incr命令,在实际开发中使用的并不多;
decr(decrement的前四个字母)命令:将指定的数字自减1
decr命令,在实际开发中使用的并不多;
incrby命令;
decrby命令;
Hash键值类型
说明:
(1) 本篇博客主要内容是【Hash 键值类型】和对应的操作命令;
(2) 很容易理解,为了能够解决各种实际的复杂业务问题,redis要想应对【比较复杂的业务】,就需要有对应的【结构化数据结构】;
(3) 这些命令以后会大量用到,没必要记忆,用就完事了;
一:【Hash键值类型】 简介
1.【Hash键值类型】简介
如上图,【emp:1】是【Hash键值类型中的:键】,其在业务中的意思就是1号员工;【后面的,name,age……这个四个键值对】是【Hash键值类型中的:值】;
【Hash键值类型】特别适合保存如上的结构化数据;
比如,在项目中,可以使用【Hash键值类型】存储对象;
2.【Hash键值类型】常用命令
(1)这些命令都是比较容易理解的;
二:【Hash键值类型】常用命令演示
hset命令:给某个key,设置一个【属性和属性值】;
可以看到,hset命令,一次只能设置一个属性;
hget命令:从某个key中,获取一个【属性和属性值】;
可以看到,hget命令,一次只能提取一个属性;
hgetall命令:从某个key中,一次性获取所有【属性和属性值】;
hmset命令:给某个key,一次性,设置多个【属性和属性值】;
hmset命令可以大幅度简化我们的工作;在开发中,也建议使用hmset命令;
hmget命令:从某个key中,一次性,获取多个【属性和属性值】;
hdel命令:删除某个key中的,某个【属性和属性值】;
说明:del命令,是删除对象;如【del emp:2】是将emp:2这个“Hash 键值类型”数据,整个删除;
hlen命令:从某个key中,获取hash的【属性和属性值】的数量;
hexists命令:判断,在某个key中,某个【属性】是否存在;
List列表类型
说明:
(1) 本篇博客主要内容是【List列表】和对应的操作命令;
(2) 很容易理解,为了能够解决各种实际的复杂业务问题,redis要想应对【比较复杂的业务】,就需要有对应的【结构化数据结构】;
(3) 这些命令以后会大量用到,都是些非常基础的命令,没必要记忆,用就完事了;
一:List列表类型简介
(1) Redis中的List列表,相当于Java中的数组;
● List中的元素类型,只能是字符串 ;
● List中的元素是 有序的 ;
(2) 因为List是有序的,自然是 允许重现重复 元素的;
二:List列表类型,常用命令
Redis中的List列表,相当于Java中的数组。只是,redis中的List提供了更多的插入和移除命令;
1.List的新增命令:rpush,lpush;
上面命令的过程是:即,在List的右边(尾部),依次增加c,b,a; (PS:c,b,a这些元素都要求是字符串类型)
上面命令的过程是:即,在List的左边(头部),依次增加f,e,d; (PS:f,e,d这些元素都要求是字符串类型)
2.List的删除命令:rpop,lpop;
执行rpop后,右侧的最后一个元素就会被弹出;
执行lpop后,左侧的第一个元素就会被弹出;
3.List其他命令:lrange,llen;
● lrange命令:查看,某列表起始到结束范围内的元素;如上图,就是获取listkey列表中,索引为0,1,2的三个元素;
● 如果第二个索引是【-1】,则代表末尾;
● 在实际中,可以使用如【lrange listExample x y】的方式,来获取listExample列表的一个子集;
llen命令,获取某列表元素总数;
三:案例:这个案例是一个流程,顺序看下去就行;
rpush命令;
自然,rpush可以一次性插入多条数据;
lrange命令 ,查看列表的元素
lpush命令;
rpop命令;
lpop命令;
llen命令;
一个点: 一个List建议只保存一个类型(逻辑意义上的同类型)的数据;
List列表,在实际使用中,一般用于保存同一类型的数据;这儿的类型不是Integer,String这些;List列表只能保存String类型数据;这儿的【保存同一类型的数据】意思是逻辑上的类型,即一个list要么只保存学生的信息,要么只保存电脑的信息,不要在一个List中既保存学生信息又保存电脑信息;(这是一个需要遵循的开发习惯)
Set类型集合
说明:
(1) 本篇博客主要内容是redis中的【Set集合类型】和【Zset有序集合类型】
(2) 集合类型在实际项目中,使用的是比较少的(和Java有点类似,自己在做Java项目的时候,只是偶尔遇到需要去重的场景时,才会用到Java中的Set);所以,本篇博客的内容,基本了解就行;
一:Set和Zset简介
(1) Set集合中元素不可重复;
(2) Zset集合:只是在Set集合的基础上,增加了一个分数,让无序集合变成了一个按分数排序的有序集合;
(3) Set集合和Zset有序集合,在实际中使用的不多,所以关于这部分,了解一下即可;
二:Set 案例演示
sadd命令 :创建一个集合;向集合中添加元素
smembers命令 :获取集合中的所有元素;
Set之间是可以彼此运算的;
sinter命令 :获取set集合的交集;
sunion命令 :获取set集合的并集;
sdiff命令 :求两个集合的差集;
三:Zset 案例演示
zadd命令 :创建Zset;向Zset中添加元素;
zrange命令 :获取指定索引范围内的子集;
上图中,展示score可以重复的例子写错了,补充展示如下图:
withscores可选参数 :打印分数
zrangebyscore命令 :以分数作为范围,来筛选数据;
四:Redis常用数据类型总结;
● 根据业务场景,选择合适的数据类型;
● String是最基本、最重要的数据类型;
● Hash作为一种结构化数据类型,其是在String基础上的扩展;
● List中的元素类型只能是String类型;
● 使用频次: String Hash List Set&Zset;
● 目前自己,可以这样理解,Redis可以看成是一个大Map,里面的数据都是【key- value的键值对】;对于String类型来说,value就是一个字符串;对于Hash来说,value就是一个结构化数据;对于List来说,value可就是一个数组;对于Set和Zset来说,value就是一个集合;