标签:
今天来学习redis的基础数据类型,redis中一共有五种数据类型,分别是:string,hash,list,set,zset。下面分别进行介绍。
一、string(字符串)
字符串类型是redis最基础的数据类型,它能存储任何形式的字符串,包括二进制数据。一个字符串类型允许存储的数据最大容量是512M。字符串是其他4种数据类型的基础。
1 字符串相关命令
1)GET/SET命令
SET key value #给key赋值 GET key #获取key的值
127.0.0.1:6379> SET str ‘hello,world‘ OK 127.0.0.1:6379> GET str "hello,world"
当键不存在时返回空值。
2)INCR递增命令
字符串类型可以存储任何形式的字符串,当存储的字符串是整数形式时,可以用incr命令让它自动递增。
INCR key 127.0.0.1:6379> INCR bar (integer) 2 127.0.0.1:6379> INCR bar (integer) 3
当键不存在时,会自动创建该键并从0开始递增。
2 字符串实践
1)文章访问量统计
博客常见的一个功能就是统计文章的访问量,这里我们可以为每篇文章使用名为post:id:page.view的键来记录文章的访问量,每次有人访问的时候用incr命令为该键递增。
键的命名规则:对象类型:对象id:对象属性
如:user:1:friends 表示id为1的用户的好友列表,增加易读性和可维护性。
2)生成自增ID
怎么为每篇文章标示一个唯一ID呢?在关系型数据库中可以用auto_increment,但是在redis中可以通过另一种模式实现:对每一类对象使用名为对象类型(复数形式):count的键来存储当前对象类型的数量,没增加一个新对象就对该值进行递增。
3)存储文章数据
文章数据包括标题、内容、发布时间等字段,而我们知道一个字符串类型只能存储一个字符串,那么如何存储文章数据呢?因为字符串类型可以存储二进制数据,可以采用MessagePack进行序列化,速度更快,占用空间更小。下面是伪代码:
#获得新文章ID $postid = INCR posts:count #将博客文章诸多字段序列化成字符串 $serialpost = serialize($posttitle,$content,$author,$time) #将序列化后的文章存储到字符串中 SET post:$postid:data = $serialpost #从redis中读取id=42的文章数据 $serialpost = GET post:42:data #将文章反序列化成各个字段 $posttitle,$content,$author,$time=unserialize($serialpost) #获取文章的访问数量 $count = INCR post:42:page.view
3 字符串相关扩展命令
1)增加指定整数
INCRBY key increment 127.0.0.1:6379> GET goo "2" 127.0.0.1:6379> INCRBY goo 3 (integer) 5
2)减少指定整数
DECR key DECRBY key value 127.0.0.1:6379> GET goo "5" 127.0.0.1:6379> DECR goo (integer) 4 127.0.0.1:6379> DECRBY goo 2 (integer) 2
3)向尾部追加值
APPEND key value,如果该键不存在则将该value设为键的值,返回值是追加后的长度。
127.0.0.1:6379> GET str "hello,world" 127.0.0.1:6379> APPEND str ‘,zhao‘ (integer) 16 127.0.0.1:6379> GET str "hello,world,zhao"
4)获取字符串长度
STRLEN key
127.0.0.1:6379> STRLEN str (integer) 16
5)同时设置/获取多个键值
MGET/MSET key1 key2 ....
127.0.0.1:6379> MGET str goo bar
1) "hello,world,zhao"
2) "2"
3) "3"
一、hash(散列类型)
标签:
原文地址:http://www.cnblogs.com/mysql-dba/p/4993144.html