Redis基础(不包含使用方法)
1、redis 提供五种数据类型: string,hash, ,list,set 及 sorted set(按照字典顺序排列).
2、redis通过以下两种方式进行持久化:
1)快照方式
这种方式就是将内存中数据以快照的方式写入到二进制文件中
默认文件名:dump.rdb
使用命令:save或bgsave
在主线程中保存快照,因为redis使用一个主线程处理所有客户端请求,所以会造成阻塞;每次快照都是一次性将完整数据写入到磁盘,并不是增量来做的;由于快照是隔一定的时间进行一次,如果发生当机,最后一次快照之后修改的数据就丢失了。综上,这种方式缺点太多,不推荐使用。
2)日志追加方式
这种方式 redis 会将每一个收到的写命令都通过 write 函数追加到文件中,当 redis 重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容
默认文件名:appendonly.aof
由于操作系统会在内核中缓存 write 做的修改,所以可能不是立即写到磁盘上,这样的持久化还是有可能会丢失部分修改。
修改配置文件中的appendonly参数为true来启用日志追加,修改appendfsync参数来选择持久化方式(always-每次收到命令都强制写入磁盘,最慢,但是最安全;everysec-每秒强制写入磁盘一次,性能和数据安全的折中选择,推荐使用;no-完全依赖操作系统,性能最好,数据安全没保证)
日志文件可以使用bgrewriteaof命令来进行压缩(将重复的命令转换成一条命令)
3.redis虚拟内存
vm-enabled yes #开启虚拟内存功能
vm-swap-file /tmp/redis.swap #交换出来 value 保存的文件路径/tmp/redis.swap
vm-max-memory 268435456 #redis 使用的最大内存上限(256MB),超过上限后
redis 开始交换 value 到磁盘 swap 文件中。建议设置为系统空闲内存的 60%-80%
vm-page-size 32 #每个 redis 页的大小 32 个字节
vm-pages 134217728 #最多在文件中使用多少个页,交换文件的大小 =
(vm-page-size * vm-pages)4GB
vm-max-threads 8 #用于执行 value 对象换入换出的工作线程数量。0
表示不使用工作线程(为0时使用阻塞的方式进行换入换出,大于0使用后台线程的方式换入换出,相对来说阻塞的方式性能更好,但是会牺牲响应性)
4.redis主从复制
1) master 可以有多个 slave。
2) 除了多个 slave 连到相同的 master 外,slave 也可以连接其它 slave 形成图状结构。
3) 主从复制不会阻塞 master。也就是说当一个或多个 slave 与 master 进行初次同步数据时,master 可以继续处理客户端发来的请求。相反 slave 在初次同步数据时则会阻塞不能处理客户端的请求。
4) 主从复制可以用来提高系统的可伸缩性,我们可以用多个 slave 专门用于客户端的读请求,比如 sort 操作可以使用 slave 来处理。也可以用来做简单的数据冗余。
5) 可以在 master 禁用数据持久化,只需要注释掉 master 配置文件中的所有 save 配置,然后只在 slave 上配置数据持久化。
配置 slave 服务器很简单,只需要在配置文件中加入如下配置(首先master需要设置appendonly为true):
slaveof 192.168.1.1 6379 #指定 master 的 ip 和端口
5.集群方案
Twemproxy、Codis 推荐使用Codis,具体可查看官方文档进行配置,很简单的