00:01
各位同学大家好,咱们下面继续来学习re中的字符串数据类型,刚才呢给大家演示了里边基本的几个命令,然后在最后呢,在字符串操作中还有另外几个命令,那给各位做个演示,首先我们看第一个叫m set m set什么意思呢?我可以同时设置一个或者多个的KY6这么一个键值,对,另外有一个叫get,能根据多个K取它的这个一个值,另外有一个叫m set NX也是能设置多个K和Y6,那下面给大家演示一下,首先我们先用这个叫m set。在里边有K和Y,那我们来设置一下啊,这里边为了明显我这么来做,我先把这个库给它先清空一下,Flash DB清空一下。为了咱们看的更明显,然后目前里边为空,我们用m set,比如说第一个K1,我叫值是V1 K2值是V2 K3值是V3,大家看目前咱设置是不是有三部分,K1 K2 K3,然后咱们查看一下三个值是不是都设进去了,所以这是里边的第一个命令叫m site,能设置多个KY6,然后里边第二命令叫m get,通过它能取到多个值,比如咱来一个m get k1 K2 K3。
01:34
各位看到把K1 K2 K3对应的值我们是不是都取出来了啊,这是第二个,另外第三个叫m set NX,那说一下这个什么意思?NX它就表示啊,也是设置K和Y6,比如说咱们来一个K11 V11 K12 V12也能设置多个值,但是它有一个特点,如果说你设置了K里边之前已经存在了,那这个时候呢,你设置值是不会成功的,比如大家看一下里边我的幺幺,幺二里边是不存在,因为你的K1已经存在了,就是当你这里边有任何一个存在,其他的都不会成功,只有你这三个都不存在才成功,那比如说咱给他改一下啊,我改成这个叫幺三。
02:29
返回值是不是一,咱们再看一下111213是不是就设进去了,所以这个叫m set NX是一个原子性的,当你有任何一个K在RA中已经存在,那所有的设置都失败,只有所有K都不存在,那它才叫成功。所以这是三个基本命令,然后除了这个之外,下面还有这么一个命令,给各位快速演示一下。首先看这个叫get range,它表示呢,获取范围的值,比如说这里边有一个开始位置,还有一个解数位置,那咱们来测试一下啊。
03:07
比如现在我向里边设置一个,我们就叫这个呃,Name,然后值我叫Lucy Mary,那现在我用命来取下get。在里边我加上name,然后加上它的开始和结束,就是咱来一个零,再来一个三,大家看反值是Lucy,你看啊,0123,它包含零,也包含三,把Lucy值得到,这是获取范围的值,然后这里边我们也可以在指定的范围中来设置值,叫set range值,那咱来试一下啊,Set range值。比如说这里边我向内中的就是第三个位置,里边是一个值叫ABC,然后咱们看一下结果get name,大家看啊,Lucy ABC,然后这里边这值是不是给它就设进去了,就是在我们的第三位置来设置你的这个值,这是我们演示的这么一个内容,所以大家把这个给他知道。
04:15
然后除了这个之外呢,下面还有这么一个命令给大家说一下,这个命令就是我们在设置key的时候,之前呢,在用那个叫P能设置它的过期时间,而用这个命令set ex,你在设置值的时候就可以设置它的过期时间,那咱来试一下啊,Site ex,比如说咱们的K,我就叫这个,呃,就叫age,然后这里边下一个参数是它的过期时间,比如过期时间我来一个20秒,然后它的值我就叫这个啊,咱就来一个Y6。30啊,就为了区分一下,现在做了一个设置,然后设置之后咱用这个t TL age,大家看啊,里边能看到是不是它这个过期时间,就是还有多长时间它就过期了,包括你看十八十七十六十五十三十二等等,所以这是我们另外一个命令,然后除了这个之外,还有最后一个命令叫get set,它表示以新值换旧址。
05:21
那什么意思呢?咱来演示一下啊,就是我们用一个get,这个叫set。然后咱们加个K,再加上一个Y领,这就叫解克,你注意啊,取到的还是之前那个值,但是它的新值已经变成了解克,用你的这个新址换出你的旧址。所以这些都是针对我们write中字符串类型的操作,给各位快速总结,变啊,第一个命令set是指get取值A判的追加string任得到长度set NX也是设置,只有K不存在才设置,K存在不设置。
06:03
因可瑞,低可瑞,包括因可瑞BYD可瑞BY,是做加和减操作,然后这个操作是一个原子性的,另外里边你可以设置多个值,取多个值,设置过期时间,取你范围中的值等等,这些都是针对re中字符串操纵命令给各位就都演示完了,所以大家把这命令给它自己好好去操作一遍,应该并不复杂,都是最基本命令。然后命令说完之后呢,最后呢,给大家介绍一下啊,就是red里边string这种数据结构中,它的底层是怎么样一种结构,那其实这个结构应该很简单,它的底层数结构是什么?就是一个简单的动态字符串,什么叫动态字符串,就是我可以修改字符串中的值,它的内部结构上类似于咱Java中这个a release的,就是采用一个预分配勇于空间方式来减少内存的平衡分配,然后这张图中画出来的就是这么一个结构,那我们来看一下啊,首先在里边有这个kept city,它是里边实际分配这个空间就这么大,然后这里比如说当我这个就是。
07:18
实际的字符串长度,它里边高于这个嫩的时候,你看啊,这里边就是最大是这个开city有一个刃,当你的长度超过这个那的时候呢,那怎么做,它要对现有空间做扩容,扩容的话就是目前空间这个两倍的大小,就是加倍现有空间,但是当你的字符串的长度超过一兆,它也要带进扩容,当然扩容的话里边只会多扩容一兆的空间,这个一兆可能跟之前可能是之前的一倍,可能之前的0.5倍都有可能,但是需要注意的一种情况是什么呢?字符串的最大长度不能超过512兆,这是它一个极限,所以这是它的底层数结构,就是一个动态的字符串,当你超过这个嫩的大小,它会做一个扩容,但是扩容的话有一个字符串大小的限制,你小于一兆和大V1兆,它的扩容方式是不一样的,但是不管怎么扩容,字符串的最大程度不。
08:19
曾超过512兆,所以这是关于里面这个操作有一点特别说明啊,我们现在说的这个类型指的是中存在Y6值类型,并不是说的这个K。是Y6值类型,所以这是关于re中字符串的线纹透度,给各位就最终说完了。
我来说两句