Redis 定位与特性
redis 是REmote DIctionary Service的缩写即远程字典服务。
Redis 定位
redis是非关系型数据库,基于key value值来存储数据。
redis的安装
安装
安装步骤请参考:http://www.redis.cn/download.html
错误处理
DENIED Redis is running in protected mode
基本操作
16个库
redis默认有16个库(0-15),可以修改配置文件改变,默认使用第一个db0,但数据库之间没有完全隔离,即在0号库,可以对其他库进行操作如flushall命令表示清空所有的库。
keys命令
具体请参考http://www.redis.cn/commands.html#generic
Redis 基本数据类型
String类型
1 存储类型:可以用来存储字符串、整数、浮点数。
2 操作命令:请参考http://www.redis.cn/commands.html#string
3 应用场景
3.1 缓存
可以提升热点数据的访问速度
3.2 数据共享分布式
因为redis是分布式的独立服务,可以在多个应用之间共享
3.3 分布式锁
String类型的setnx,只有不存在时才能添加成功,发挥true
3.4 全局id
利用int类型的INCRBY,利用原子性
3.5 计数器,限流
INT 类型,INCR 方法如文章的阅读量
Hash 哈希
1 存储类型
解决用一个key来存储一张表的数据,value 只能是字符串,不能嵌套其他类型。
2 操作命令:http://www.redis.cn/commands.html#hash
3 应用场景
3.1 String
String可以做的事情,hash都可以做
3.2 存储对象类型的数据
如存储对象或者一张表的数据
List
1 存储类型
存储有序的字符串(从左到右),元素可以重复。可以充当队列和栈的角色。
2 操作命令
http://www.redis.cn/commands.html#list
3 应用场景
3.1 用户消息时间线
因为list是有序的,可以用来做用户的时间线。
3.2 消息队列
队列:先进先出:rpush blpop
栈:先进后出:rpush brpop
set
1 存储类型
String类型的无序集合,元素不可重复
2 操作命令
http://www.redis.cn/commands.html#set
3 应用场景
3.1 抽奖
用srandmember随机获取一个元素来实现
3.2 点赞、签到、打卡
如查看某一个人的点赞所有用户
3.3 商品标签
3.4 商品筛选,用户关注
利用集合的交集,差集和并集来实现商品的筛选
zset
1 存储类型
每个元素都有一个score,有序性根据score进行排序,若score相同,则根据ASCII码排序
数据结构对比
2 操作命令
http://www.redis.cn/commands.html#sorted_set
3 应用场景
3.1 排行榜
利用score的加减操作和根据score进行排序实现操作
BitMaps
1 存储类型
BitMaps是字符串类型定义的位操作,一个字节由8个二进制位组成,偏移量是从左到右[0-7]
2 操作命令
http://www.redis.cn/commands.html#string
3 应用场景
3.1 在线用户统计
因为bit十分节省空间(1 MB=8388608 bit),可以用来做大数据量的统计。使用bitcount命令来统计用户个数,bit支持按位与,按位或等操作。