Redis有5种基本数据类型,分别为String(字符串),list(列表),hash(字典),set(集合),和zset(有序集合)。这5中数据类型的熟练使用,是Redis的相关知识中最基础,最重要的部分,也是Redis面试面试题中被问到最多的知识点。
在这里将带领Redis初学者快速掌握着5中数据类型,考虑到Redis的命令非常多,这里只选取最常见的进行讲解。
-
String(字符串)
字符串string是Redis中最简单的数据结构,他的内部标示的就是一个字符数组。Redis所有的数据结构都以唯一的key字符串作为名称,然后通过这个唯一的key值来获取对应value数据,不同的数据类型的差异就在于value的结构不一样。
字符串的结构使用的非常广泛,一个常见的用途就是缓存用户信息,我们将用户信息结构体使用JSON序列化成字符串,然后将序列化后的字符串塞进Redis来缓存。同样,取用户信息会经过一个反序列化的过程。
Redis的字符串是动态字符串,可以修改字符串,内部结构类似于Java的ArrayList,采用预分配的冗余空间的方式来减少内存分配的频率,内部为当前字符串分配的实际空间一般高于实际字符串长度,当字符串长度小于1MB时,扩容都是加倍现有的空间,如果字符串长度超过了1MB,扩容时一次只会多扩容1MB,需要注意的是字符串最大长度为412MB。
【键值对】
想当于字段的key和value,支持简单的正删改查的操作,下面代码中的“name”就是字典中的key,而value就是字符串 的“codehole”,一下是常用的命令整理
GET、SET | 最基本的命令 | 语法:GET key,SET key value value如果有空格需要双引号以示区分 |
INCR | 整数递增 | 语法:INCR key 默认值为0,所以首先执行命令得到 1 ,不是整型提示错误 |
INCRBY | 增加指定的整数 | 语法:INCRBY key increment |
DECR | 整数递减 | 语法:DECR key 默认值为0,所以首先执行命令得到 -1,不是整型提示错误 |
DECRBY | 减少指定的整数 | 语法:DECRBY key increment |
INCRBYFLOAT | 增加指定浮点数 | 语法:INCRBYFLOAT key increment 与INCR命令类似,只不过可以递增一个双精度浮点数 |
APPEND | 向尾部追加值 | 语法:APPEND key value redis客户端并不是输出追加后的字符串,而是输出字符串总长度 |
STRLEN | 获取字符串长度 | 语法:STRLEN key 如果键不存在返回0,注意如果有中文时,一个中文长度是3,redis是使用UTF-8编码中文的 |
MGET | 获取多个键值 | 语法:MGET key [key ...] 例如:MGET key1 key2 |
MSET | 设置多个键值 | 语法:MSET key value [key value ...] 例如:MSET key1 1 key2 "hello redis" |
GETBIT | 二进制指定位置值 | 语法:GETBIT key offset 例如:GETBIT key1 2 ,key1为hello 返回 1,返回的值只有0或1,当key不存在或超出实际长度时为0 |
SETBIT | 设置二进制位置值 | 语法:SETBIT key offset value ,返回该位置的旧值 |
BITCOUNT | 二进制是1的个数 | 语法:BITCOUNT key [start end] ,start 、end为开始和结束字节 |
BITOP | 位运算 | 语法:BITOP operation destkey key [key ...] ,operation支持AND、OR、XOR、NOT |
BITPOS | 偏移 | 语法:BITPOS key bit [start] [end] |
正在更新,未完待续。。。