链表list
列表列表操作 注意:list内部的编码方式,并非是一个简单的数组,而是更接近于双端队列。 列表特点 列表中的元素是有序的,这意味着可以通过索引下标获取某个元素或者某个范围的元素列表。 区分获取和删除的区别。lindex能获取到元素的值,lrem也能返回被删除元素的值。 列表的元素是可以重复的。hash类型,field是不能重复的。 因为当前的List,头和尾都可以高效的插入和删除元素,就可以把这个list当做一个栈/队列来使用了。 相关指令非阻塞版本命令LPUSH 功能:将一个或者多个元素从头插到list中。 时间复杂度:$O(1)$。 返回值:插入list1之后的长度。 注意:如果key已经存在,并且key对应的value类型,不是list,此时lpush就要报错。 123456LPUSH key element [element...]127.0.0.1:6379> lpush key 1 2 3 4(integer) 4127.0.0.1:6379> lpush key 5 6 7 8(integer)...
无序集合set
集合概述集合就是把一些有关联的数据放到一起 集合中的元素是无序的! 有序:顺序很重要,变换一下顺序,就是不同的list1了无序:顺序不重要,变换一下顺序,集合还是那个集合 集合中的元素是不能重复的(唯一的) 和list类似,集合中的每个元素也都是string类型(可以使用json类型的数据格式) 命令普通命令SADD 功能:将一个或者多个元素添加到set中返回值:本次成功添加的个数时间复杂度:$O(1)$ 123456SADD key number [member...]127.0.0.1:6379> sadd key 1 2 3 4(integer) 4127.0.0.1:6379> sadd key2 1 1 2 3 4(integer) 4 SMEMBERS 功能:获取一个set中的所有元素返回值:set中的元素时间复杂度:近似$O(1)$ 1234567SMEMBERS key127.0.0.1:6379> smembers key1) "1"2) "2"3) "3"4)...
字符串string
stringstring类型Redis中的字符串,直接就是按照二进制数据方式进行存储的!(不会进行任何的编码转换,存的是啥,取出来的就是啥)。Redis对于string类型,限制了大小最大是512M。redis单线程模型,希望进行的操作都能比较迅速。 可以存储文本数据,整数、普通字符串、JSON、XML、二进制数据(图片,视频、音频) 相关命令append 1APPEND KEY VALUE:字符串追加字符串 123456127.0.0.1:6379> set key1 "123"OK127.0.0.1:6379> append key1 你好(integer) 9127.0.0.1:6379> get key1"123\xe4\xbd\xa0\xe5\xa5\xbd" xshell中断,默认字符编码都是UTF-8,在中断中输入汉字之后,也是按照UTF8编码的,一个汉字在UTF-8字符集中,通常是3个字符。 getrange 功能:返回key对应的闭区间[start,...
有序集合zset
zset概述zset是有序集合。zset中的member中同时引入了一个属性,分数,浮点类型。每个member都会安排一个分数,进行排序的时候,就是按照此处的分数大小来进行升序降序排序。 普通命令ZADD 功能:向有序集合中已经有的元素个数时间复杂度:$O(logN)$ 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152ZADD key [NX | XX] [GT | LT] [INCR] socore number [score member...]127.0.0.1:6379> zadd key 99 张三 98 李四 97 王五 96 赵六(integer) 4127.0.0.1:6379> zrange key 0 -11) "\xe8\xb5\xb5\xe5\x85\xad"2) "\xe7\x8e\x8b\xe4\xba\x94"3)...