没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
Redis 简介
1. Redis 由来
2008 年,意大利的一家创业公司 Merzia 推出了一款基于 MySQL 的网站实时统计
系统 LLOOGG ,然而没过多久该公司的创始人 Salvatore Sanfilippo 便 对 MySQL 的
性能感到失望,于是他决定亲自为 LLOOGG 量身定做一个数据库,并于 2009 年开
发完成,这个数据库就是 Redis 。 不过 Salvatore Sanfilippo 并不满足只将 Redis 用
于 LLOOGG 这一款产品,而是希望更多的人使用它,于是在同一年 Salvatore
Sanfilippo 将 Redis 开源发布,并开始和 Redis 的另一名主要的代码贡献者 Pieter
Noordhuis 一起继续着 Redis 的开发,直到今天。
Salvatore Sanfilippo 自己也没有想到,短短的几年时间,Redis 就拥有了庞大的用
户群体。Hacker News 在 2012 年发布了一份数据库的使用情况调查,结果显示有
近 12%的公司在使用 Redis。国内如新浪微博、街旁网、知乎网,国外如
GitHub、Stack Overflow、Flickr 等都是 Redis 的用户。
VMware 公司从 2010 年开始赞助 Redis 的开发, Salvatore Sanfilippo 和 Pieter
Noordhuis 也分别在 3 月和 5 月加入 VMware,全职开发 Redis。
2. 什么是 Redis
Redis remote dictionary service 远程字典服务
Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。它通过提
供多种键值数据类型来适应不同场景下的存储需求。
redis 特征:
1. 快 key-value
2. 持久化,过期淘汰策略
3. 高可用 集群
4. 单线程命令执行
5. io 多路复用
Redis 数据类型原理及应用场景
##Redis 五大常用数据类型:
1. String
• 字符串常用操作:
SET key value //存入字符串键值对
MSET key value [key value ...] //批量存储字符串键值对
SETNX key value //存入一个不存在的字符串键值对
GET key //获取一个字符串键值
MGET key [key ...] //批量获取字符串键值
DEL key [key ...] //删除一个键
EXPIRE key seconds //设置一个键的过期时间(秒)
• 原子加减
INCR key //将 key 中存储的数字加 1
DECR key //将 key 中存储的数字减 1
INCRBY key increment //将 key 所存储的值加上 increment
DECRBY key increment //将 key 所存储的值减去 increment
• 底层数据结构
key:使用 type 命令查看(type key )
SDS simple dynamic string 简单动态字符串
value:使用 object encoding 命令查看 (object encoding key)
redisObject(封装了 SDS), 有三种数据类型
1. int 8 字节长整形
2. embstr <=44 个字节
3. raw >44 个字节
• 应用场景
– 单值缓存
– 对象缓存
– 分布式锁 SETNX
– 计数器 INCR
– 分布式全局系统序列号 INCRBY orderId 100
2. Hash
• Hash 常用操作
HSET key field value //存储一个 hash 表 key 的键值
HSETNX key field value //存储一个不存在的 hash 表 key 的键值
HMSET key field value [field value ...] //在一个 hash 表 key 中存储多个键值对
HGET key field //获取 hash 表 key 对应的 field 键值
HMGET key field [field ...] //批量获取 hash 表 key 中多个 field 键值
HDEL key field [field ...] //删除 hash 表 key 中的 field 键值
HLEN key //返回 hash 表 key 中 field 的数量
HGETALL key //返回 hash 表 key 中所有的键值
HINCRBY key field increment //为 hash 表 key 中 field 键的值加上增量
increment
• 底层数据结构
key:使用 type 命令查看(type key )
hash 哈希
value:使用 object encoding 命令查看 (object encoding key)
1. ziplist 压缩列表
2. hashtable 哈希表
rehash 过程
• 为 ht[1]分配空间,ht[0].used*2
• ht[0]->ht[1]
• ht[0]删除,ht[1]改为 ht[0],创建新的 ht[1]
剩余20页未读,继续阅读
ilovehippie
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0