一.前言
redis并不是简单的key-value数据容器,不能将其理解为静态存储数据,它是动态交互的数据结构服务器,可以被用作缓存,高性能k-v数据库等。
它支持很多种类型的数据结构,不仅支持string类型的value,还支持很多种复杂类型的数据。以下简单列出redis支持的数据类型,后续再对每种数据类型以及它们的常用操作命令做详细介绍
1.安全二进制氏String类型:将String类型作为元素值;
2.Lists类型:根据插入顺序的String类型为元素的集合,基于Linked List实现,非Array型;
3.Sets类型:无重复且无序的String类型为元素的集合;
4.Sorted Set类型:无重复且有序的String类型为元素的集合;
5.Hashes类型:映射域到值类型的数据结构,其中域和值都是String类型;
二.Redis数据类型详解
在介绍数据类型之前,先让我们来看看Redis k-v数据结构中非常重要的key形式。redis中的key是二进制安全的也就是说任何二进制序列都可以作为key,譬如:字符串“foo”,一张图片的内容等。甚至空字符串都可以。
良好的key的命名规则如下:
1.key不要太长。在redis中可以的最大容量是512M,但是实际中key超过1024byte就非良好的设计方式了。key值太大不仅浪费内存空间,更是在请求中对于key'的查找需要更多的时间进行比较;
2.key值不宜太短。这个原则貌似与第一条相冲突,实则不然。有时key的变长使得增加空间相对于使得key更具可读性更显次要;
3.key的命名中可以使用冒号和破折号加以细分,使key更具可读性,灵活性。例如:aticle:1000:tags。其中第一位表示类型,第二位表示该类型对象的Id,第三位表示Id为1000的文章中的标记;
作用于Key的常用命令:
redis提供很多非常实用而有效的命令,这些命令作用于redis中的Key,管理Key的空间。
1.EXISTS
exists主要是查找指定的键是否存在,如果存在则返回(Integer) 1,否则返回(Integer) 0。使用情况如下:
首先实用redis-cli命令进入redis的客户端命令行模式:
127.0.0.1:6379> SET mystring "mystring0"
OK
127.0.0.1:6379> GET mystring
"mystring0"
127.0.0.1:6379> EXISTS mystring
(integer) 1
127.0.0.1:6379> EXISTS mystring1
(integer) 0
127.0.0.1:6379>
2.DEL
del主要用来删除Key,并将Key对应的值随之删除。
127.0.0.1:6379> EXISTS mystring
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> DEL mystring
(integer) 1
127.0.0.1:6379> EXISTS mystring
(integer) 0
127.0.0.1:6379> GET mystring
(nil)
127.0.0.1:6379>