redis的使用场景
1、对数据高并发读写
2、海量数据的高效存储和访问
3、对数据的高可扩展性和高可用性
redis支持的数据类型
key-value存储,支持的数据类型为字符串、hash、链表、集合、有序集合,这些类型都支持pop/push,add/remove以及取交集,并集等更多丰富的操作。redis还支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入到追加的记录文件。
redis的两种常用使用方式
1、应用直接访问redis
缺点是如果redis服务器内存释放或者服务器崩溃,会造成数据的丢失。
2、应用直接访问redis,当redis访问失败的时候访问mysql,mysql与redis保持同步
redis具体的适用场景
1、取最近N个数据的操作
2、排行榜应用,取TOP N的操作
3、需要精确设定过期时间的应用
4、计数器应用
5、uniqu操作,获取某段时间所有数据的排重值
6、实时系统,反垃圾系统
7、Pub/Sub构建实时消息系统(发布/订阅)
8、构建队列系统
9、缓存
对比MySql
同样有库的概念,但是没有表,也没有字段/列的概念
安装 -----http://my.oschina.net/OSrainn/blog/724964
redis配置文件详解
daemonize <yes | no> 是否以后台daemon的方式运行
pidfile <*.pid> pid文件的位置,daemonize为yes时才起作用
post <port> 监听的端口号,默认6379
timeout <seconds> 请求超时时间
loglevel <debug | verbose | notice | warning> log信息级别
logfile <filename> log文件位置,默认stdout
databases <number> 开启数据库的数量
save <seconds> <change> 保存快照的频率,在一定时间内执行一定数量的读写操作时,自动保存快照。可设置多个条件
slaveof <masterip> <masterport> 本机为从服务器时,设置主服务器的IP及端口
masterauth <master-passwrd> 本机为从服务器时,设置主服务器的连接密码
requirepass 连接密码
maxclients <number> 最大客户端连接数,0为不限制
maxmemory <bytes> 设置最大内存,达到最大内存设置后,redis先尝试清除已到期或即将到期的key,当此方法处理后,任到达最大内存设置,讲无法再进行写入操作
rdbcompression <yes | no> 是否使用压缩
dbfilename <*.rdb> 数据快照文件名(只是文件名,不包括目录)
dir <directory> 数据快照的保存目录
appendonly <yes | no> 是否开启appendonly log,如果开启每次写操作记一条log,会提高数据抗风险能力,但影响效率
appendfilename <*.aof> 更新日志文件名
appendfsync <always | everysec | no> appendoly log如何同步到磁盘,always:每次写都强制调用fsync;everysec:每秒启用一次fsync;no:不调用fsync等待系统自己同步
vm-enabled <yes | no> 是否启用虚拟内存
vm-swap-file <*.swap> 交换分区文件(启用虚拟内存时使用)
vm-max-memory <number> 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(reids的索引数据就是key),也就是说,当vm-max-memory设置为0时,其实是所有的value都存在与磁盘上
vm-page-size <bytes> SWAP文件页大小(根据存储的值设置,单位:byte)
vm-page <number> 交换分区文件中内存页的数量
vm-max-threads <number> 对SWAP文件操作的最大线程数(最好为CPU的数量)
hash-max-zipmap-entries <number> hash中总元素个数不超过设定个数时,以zipmap的方式存储,以节约内存,默认512
hash-max-zipmap-value <length> hash中key与value长度小于length时,以zipmap的方式存储,默认64