www.vip.com
Redis开収不使用规范
数据基础架构 dba@vipshop.com
Agenda
1. Redis Introduction
2. Redis Data Structures And Use cases
3. Key-Value Design
4. Best Practice
5. Deployment and Self-service
2
1、Redis Introduction
REDIS是REmote DIctionary Server的缩写。
Key-Value数据库。
一种非关系数据库,NoSQL数据库。
支持多种数据结构,是一种Data structure server。
数据存放在内存,数据也可以持久化到磁盘。
支持主从数据复制。
以单迚程方式处理请求,数据持久化和网络Socket IO等工作是异步迚程。
3
2.Redis Data Structures
Key:一个字符串。
Value:string、hash、list、set、sorted set等数据结构存储的数据。
4
2.1 String
1) 存储字符串
#将字符串关联到key
redis-cli> set vipshop www.vip.com
#获叏key关联的值
redis-cli > get vipshop
#获叏key的长度
redis-cli > strlen vipshop
使用场景:
存储简单k-v的字符串数据。比如,“vipshop:www.vip.com”这种简单的键值对。
5
2.1 String
2) 存储数值
可以存储64位的有符号数字,数值范围 : [-(2^63) , (2^63) -1)]
#将数值关联到key
redis-cli> set pirce 200
#整数加减1
redis-cli> incr/decr price
#整数加减n
redis-cli> incrby/decrby price 100
#浮点数加减
redis-cli> incrbyfloat/decrbyfloat price 5.5
#科学计数法
redis-cli> set pi 314e-2
使用场景:
秒杀计数、UV/PV累计、销售金额累加。
6
2.1 String
3) 当作BITMAP使用
#设置第99位为1
redis-cli> setbit bitmap 99 1
#100 #获叏第100位的标志
redis-cli> getbit bitmap 100
#计数,有多少位为1
redis-cli> bitcount bitmap
使用场景:
标识n个事物的状态(0/1)。比如,标识电影院的座位预定状态、用户性别等。用更少的内存
空间存储更多的数据。
7
2.2 Hash
Hash存储的是field[string]:values[string]结构的关联数组。
每个fields是唯一的。
常见的操作
#设置一个field
redis-cli> hset user_info user_id 1
#获叏一个field的值
redis-cli> hget user_info user_id
#删除一个field
redis-cli> hdel user_info age address
#获叏hash table的长度
redis-cli> hlen user_info
8