数据类型也称数据对象,包含字符串对象(string)、列表对象(list)、哈希对象(hash)、集合对象(set)、有序集合对象(zset)。java
string 类型是redis最基础的数据类型,为简单key-value结构,而且value不限制类型,能够是数字,字符,图片等序列化对象,value值最大不可超过512M。redis
string类型在使用中常常用做分布式session共享,计数器,验证码过时,基础数据的缓存等。spring
在java编码中使用都是使用封装好的jar包,如spring redis,jedis等等,当封装的方法名称与命令行直接操做大同小异,下面展现命令行使用:数据库
注:redis的命令无大小写区分,但key值严格区分大小写缓存
参数:网络
list数据类型为key-value键值对结构,可是其value值的结构为list,相似java中的队列;左侧为表头,右侧为表尾;结构相似于java的Map<String,List<Object>>session
list数据类型能够做为消息队列使用,还能够做为排名等的缓存,也能够做为缓存分页。 数据结构
hash表数据类型是key-value结构,可是key为String类型,而value的结构则是field-value结构;相似于java中的Map<Sring,Map<Stirng,Object>> 结构。分布式
hash表数据结构中field-value 的最大存储个数是 232 - 1 个;主要用途是做为key-value对象类型的缓存,在value中存储这个对象,取用时便于还原对象。大数据
set数据类型为无序集合数据类型,且数据不重复;
集合类型常常用户存储一些集合类型的数据,如微博的全部粉丝,标签等数据;结构相似java中的HashSet。
zset数据类型为有序集合类型,且集合内元素不重复;
有集合一般被用做排行榜等有时间顺序或其余顺序的缓存集和;相似于java中的hashTable
redis除了对五大数据类型的操做命令,还有一些系统命令,能够对这个数据库进行操做,如删除key,清空数据库,手动持久化等。
注:redis内部命令还有不少,有些维护之类的命令再次不作介绍,若是用到,请参考redis官网。
Redis的命令大致上能够分为两种,一种能够称为数据库级命令,能够对任何键值操做,如:DEL、TYPE等,第7节说到的基本都是;另外一种是针对五大数据类型操做的,以上几节说道的基本都是。
(1)命令类型检查
命令的执行以前,Reddis会先检查输入的key的类型是否正确,才会决定是否执行给定的命令,也就是命令与值类型是否匹配。
(2)多态命令
如前一章说过四种数据对象每种都有两种编码方式,但在本章使用的命令确是一个;Redis在执行命令以前,会判断对象的编码方式,而后再执行对应的命令,这就是命令的多状态。
参考:
《Redis设计与实现》黄健宏著,网上对Redis的详解等
此博客为笔者使用redis好久以后,参考网络上各种文章总结性书写,原创手打,若有错误欢迎指正。