什么是Redis
- Redis是Remote Dictionary Server(远程数据服务)的缩写,是一款:内存高速缓存数据库
- 该软件使用C语言编写,它的数据模型为 key-value。
- 它支持丰富的数据结构,比如 string, list, set, sorted set, hash 。
- 可持久化,保证了数据安全。
什么场合适合使用Redis
- String——相当于加上持久化特性的memcache,储存一些常用字符串数据
- Sort Set——排行榜应用,取top n操作,例如sina微博热门话题
- List——获得最新N个数据 或 某个分类的最新数据计数器应用
- Set——sns(social network site)获得共同好友
redis和memcache比较
- Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,sorted set,hash等数据结构的存储。
- Redis支持master-slave(主—从)模式应用。
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以自动加载
- Redis单个value的最大限制是1GB, memcached只能保存1MB的数据
redis资源
- 官方网址:http://redis.io/
- redis 中文资料站: http://www.redis.cn/
- php操作redis:http://blog.sina.com.cn/s/blog_3dbab2840100uo5l.html
keys键操作
string类型操作
list类型操作
list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。
set类型操作
set是string类型的无序集合。
除了基本的添加删除操作,还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能。
sort set排序类型操作
和set一样sorted set也是string类型元素的集合,
不同的是每个元素都会关联一个权(score)。
通过排序权值,可以有序的获取集合中的元素
hash类型操作
hash数据类型存储的数据与mysql数据库中存储的一条记录极为相似。
redis的持久化方式
-
Snapshotting(快照)方式,也是默认方式
- 默认的文件名为:dump.rdb
- save 900 1 #900 秒内如果超过 1 个 key 被修改,则发起快照保存
save 300 10 #300秒超过10个key被修改,发起快照
save 60 10000 #60秒超过10000个key被修改,发起快照
-
Append-only file(缩写 aof)方式,需要到配置文件开启
- 默认的文件名为:appendfilename appendonly.aof
- 说明:会将每一个收到的写命令都通过 write 函数追加到文件中,当 redis 重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容
- 有三个选项:
appendfsync always——每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec——每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
appendfsync no——完全依赖 os,性能最好,持久化没保证
- Snapshotting和aof是同时开启的。Snapshotting比较耗费资源,较长时间持久化一次,在2次Snapshotting期间的数据使用aof方式保存。2种方式合作保证了redis的数据安全