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就是一个集合;