码迷,mamicode.com
首页 > 其他好文 > 详细

Redis数据类型

时间:2015-11-24 22:55:28      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

今天来学习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(散列类型)

 

Redis数据类型

标签:

原文地址:http://www.cnblogs.com/mysql-dba/p/4993144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!