1.介绍
Redis 是优秀的数据结构存储服务器,典型的key-value结构
不仅支持String,还支持列表List<String>,集合Set<String>,哈希标Hash<String>
大家注意到尽管支持多种数据类型,但是最底层的仍然只能是String
2.安装
(1)下载安装包:http://redis.io/
下载得到归档文件,当前最新是 redis-2.8.11.tar.gz 版本,比如下载到 opt 目录
(2)安装 进入 /opt 目录,解压归档文件:tar zxvf redis-2.8.11.tar.gz
解压完之后,在opt目录会有一个 redis-2.8.11 的目录,redis的所有文件都在这里面
打开这个目录,会看到 src 目录,这里面就有启动redis的命令行工具,也有连接redis的客户端工具
比如 redis-server 和 redis-cli
(3)部署
到这一步其实就可以启动redis了,为了在任何地方都能启动,把它们加入到/usr/local/bin 目录
cp -pf redis-server /usr/local/bin
cp -pf redis-benchmark /usr/local/bin
cp -pf redis-cli /usr/local/bin
cp -pf redis-check-dump /usr/local/bin
cp -pf redis-check-aof /usr/local/bin
同时在 redis-2.8.11 目录下有一个redis的配置文件 redis.conf
你也可以复制到 etc 目录:redis.conf /etc/redis/redis.conf
现在就可以来尝试启动Redis服务,并连接上去了
(4)启动Redis服务
可以在任何一个目录启动:redis-server /etc/redis/redis.conf
如果运行成功,在命令行窗口会提示你:The server is now ready to accept connections on port 6379
意思就是成功启动了,等待来自6379端口发起的连接
(5)启动客户端
redis-cli 就会进入客户端命令行模式
你试试 set name test
再 get name
会发现Redis已经生效了
3.Redis 配置
(1)内存分配调整:启动之后,会提示一个警告信息
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition.
To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf
and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
意思就是当前内存分配策略为:0,可能在内存不足的情况下,Redis进行数据持久化时会失败!
需要在调整 /etc/sysctl.conf 文件的内存分配策略为:1
那么打开该文件,在文件最后追加一行:vm.overcommit_memory = 1 然后在命令行执行:sysctl vm.overcommit_memory=1
内存分配策略有3种,分别是:
- 0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
- 1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
- 2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
- daemonize:是否以守护线程方式运行,默认是no。所以启动redis-server之后:该命令行所在窗口一直不关闭。
- pidfile:pid文件位置,只有当以 daemonize 方式运行,才会默认在 /var/run/目录生成 redis.pid 的进程文件
- port:监听的端口号
- timeout:请求超时时间
- loglevel:log信息级别,有 debug verbose notice warning 4个级别可选,默认 notice
- logfile:log文件位置 默认是空,你可以自己指定,比如 /opt/redis-2.8.11/redis.log
- databases:开启数据库的数量 默认16个
- save * *:保存快照的频率,第一个*表示多长时间(秒级),第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
- rdbcompression:是否使用压缩 默认启用
- dbfilename:数据快照文件名(只是文件名,不包括目录。默认叫做 dump.rdb ,默认在操作系统的跟目录。 )
- dir:数据快照的保存目录(默认是./ 即操作系统根目录。如果指定在 /opt/redis/db/ 目录,那么快照文件会生成在这里)
- appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
- appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
- slaveof <masterip> <masterport> :主从配置,在redis-slave上配置master的ip port,即可。
4.更多资料
可以在线学习:http://redis.io/