Redis之安装配置
1. Redis的介绍
基于key-value键值对的持久化数据库存储系统。
它与memcache服务很像,但是支持更多的数据类型。string,list,set,zset。
redis还会周期性的往硬盘里写入数据,持久化数据。
redis还可以做主从复制。
2. Redis的优点
速度快:支持每秒10万的读写频率,采用C语言实现的,使用单线程结构,避免多线程带来的竞争问题
丰富的数据类型:strings,lists,hash,set,ordered sets
原子性:redis的所有操作都是原子性的
丰富的特性:支持publish/subscribe,通知,key过期等特性
简单稳定
redis支持异机主从复制
客户端语言多
持久化
高可用和分布式
3. Redis的应用场景
1. 全部数据都in-memory
2. Redis更多是memcache的替代品
3. 需要更多数据类型的时候,更适合使用Redis
4. 排行榜系统
5. 计数器应用
6. 社交网络
7. 消息队列系统
4. Redis的安装
1. 安装redis4.0版本
1. 准备工作:
rpm -qa gcc
yum install gcc -y
2. 下载redis,去官网,下载redis-4.0.11.
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
tar -zxvf redis-4.0.11.tar.gz
mv redis-4.0.11 /application
ln -s /application/redis-4.0.11 /application/redis
3. 在安装目录下,执行命令make
报错:
In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
#include <jemalloc/jemalloc.h>
^
编译中断。
解决方法:
[root@VM_186_206_centos redis-4.0.9]# make MALLOC=libc
4. 安装完成后,检查一下安装是否正确。
make test
报错:
[root@redis-master redis]# make test
cd src && make test
make[1]: 进入目录“/application/redis-4.0.11/src”
CC Makefile.dep
make[1]: 离开目录“/application/redis-4.0.11/src”
make[1]: 进入目录“/application/redis-4.0.11/src”
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 错误 1
make[1]: 离开目录“/application/redis-4.0.11/src”
make: *** [test] 错误 2
解决方法:
#下载一个高于8.5的版本
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
#将安装包解压到指定目录中
sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
#回到解压后的路径下
cd /usr/local/tcl8.6.1/unix/
#执行配置
sudo ./configure
#编译
sudo make
#安装
sudo make install
5. 再执行make test
\o/ All tests passed without errors!
Cleanup: may take some time... OK
6. redis加入环境变量
进入用户的环境变量文件.bashrc,在其中添加内容:
REDIS_HOME=/application/redis
PATH=$PATH:$HOME/bin:$REDIS_HOME/src
export PATH
执行. .bashrc文件。使环境变量生效。
补充:redis的可执行文件说明
| 可执行文件 | 作用 |
| redis-server | 启动redis |
| redis-cli | redis命令行客户端 |
| redis-benchmark | redis基准测试工具 |
| redis-check-aof | redis AOF持久化文件检测和修复工具 |
| redis-check-dump | redis RDB持久化文件检测和修复工具 |
| redis-sentinel | 启动redis sentinel |
2. 安装redis3.0.6
1. tcl安装
对于编译文件需要安装测试,需要tcl工具包,
下载:wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
安装:sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
sudo ./configure
sudo make
sudo make install
2. redis安装
安装以上几个redis依赖的包后,就可以安装redis了。
1:下载
首先从官方网站下载redis,我下载的是redis-3.0.6.tar.gz
下载地址:http://download.redis.io/releases/redis-3.0.6.tar.gz
2:解压编译
tar xzf redis-3.0.6.tar.gz
mv redis-3.0.6 /usr/local/redis
cd /usr/local/redis
make
cd src & make test(检查,必须安装tcl)
make install
3. 创建一个普通用户
useradd redisuser
chown -R redisuser.redisuser /usr/local/redis
4. 修改redis.conf的一些配置
daemonize yes port 37379
bind 本机的Ip地址 logfile "/usr/local/redis/logs/redis.log" dir /usr/local/redis/dump/ cluster-enabled yes
5. 创建对应的目录
mkdir -p /usr/local/redis/{dump,logs}
6. 启动redis
redis-server /usr/local/redis/redis.conf &
7. 查看redis.log日志文件是否有报错
12291:M 23 Aug 18:04:35.293 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 12291:M 23 Aug 18:04:35.293 # Server started, Redis version 3.0.6 12291:M 23 Aug 18:04:35.293 # 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. 12291:M 23 Aug 18:04:35.293 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
1. 在/etc/sysctl.conf文件添加内容:
vm.overcommit_memory=1 net.core.somaxconn = 20000
执行命令:sysctl -p,让内容生效。
2. 执行命令echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久生效:在/etc/rc.local中添加内容:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
chmod +x /etc/rc.d/rc.local
3. You requested maxclients of 10000 requiring at least 10032 max file descriptors
修改open files的最大值
临时生效: ulimit -n 65535
永久生效: 修改/etc/security/limits.conf,添加内容:
* soft nofile 65536 * hard nofile 65536
5. Redis的配置
1. 备份配置文件。
cp redis.conf redis.conf.bak
2. 配置文件一些主要的参数。
69行bind 172.16.20.15 接着是监听的端口号 92行port 6379 最大TCP连接数 101行 tcp-backlog 128(这里我改为和linux内核相同的值了,如果大型应用需要将内核的值修改到2048左右以应对更多的连接) 将Redis设置为守护进程(可选) 136行 daemonize yes 设置Redis日志路径 171行 logfile "./redis.log" Redis的数据库个数(默认16个数据库) 186行 databases 16 在196行介绍的就是关于数据持久化的设置,这里简单解释下 save 900 1有一条数据发生了变化在 900秒(15分钟)后进行持久化 save 300 10 有十条数据发生了变化在 300秒(5分钟)后进行持久化 save 60 10000 有一万条数据发生了变化在60秒(1分钟)后进行持久化 设置RDB持久化保存的文件名,和路径 253行 dbfilename dump.rdb 263行 dir ./(当前配置文件的路径) 在265行进行设置的是Redis集群的读写分离(奴从模式)主人进行数据的写入, 奴隶进行数据的读取(后面详细介绍) 在487行是关于数据库安全的设置 500行 requirepass xxxx设置访问Redis的口令(尽量写复杂的口令) 在521行是关于最大客户端的连接数的设置 532行maxclients 10000 534行是关于内存的调度和限制的设置 在603行是关于懒释放的(这是在Redis4.0中新加的配置) Redis重度使用患者应该都遇到过使用 DEL 命令删除体积较大的键, 又或者在使用 FLUSHDB 和 FLUSHALL 删除包含大量键的数据库时,造成Redis阻塞的情况;另外Redis在清理过期数据和淘汰内存超限的数据时,如果碰巧撞到了大体积的键也会造成服务器阻塞。 为了解决以上问题, Redis4.0 引入了Redis的机制,它可以将删除键或数据库的操作放在后台线程里执行, 从而尽可能地避免服务器阻塞。 在652行关于Append Only Mode的配置,改模式会记录下所有对数据库的添加操作(删除了某条数据会将添加的数据删除),是防止服务器意外宕机数据丢失是另外一种手段,所有当服务器意外宕机优先使用Append Only Mode进行数据恢复,如果AOM无法恢复再使用RDB进行数据恢复,这样数据丢失的概率较低。 672行 appedonly yes 启动Append Only Mode 676行 appendfilename "appendonly.aof" 该模式下文件保存的名称(路径默认与redis.conf在同一路径) 差不多就是这些配置了,后面的配置当需要的时候再来进行修改就可以了。 加载我们的配置启动Redis服务
3. 启动redis服务.
redis-server redis.conf
4. 登录一下redis.
redis-cli -h 172.16.20.15 -p 6379
172.16.20.15:6379> auth Cmr2018 OK 172.16.20.15:6379> get name "yangjianbo" 172.16.20.15:6379> ping PONG
5. 关闭redis服务.
redis-cli -h 172.16.20.16 -p 6379 -a Cmr2018 shutdown
6. 登录redis查看信息
info命令
6. Redis常用命令
1. redis帮助命令
redis-server -h
redis-cli help
redis内部帮助命令 help command
redis内部帮助命令 help @group
2. redis启动命令
redis-server /application/redis/conf/redis.conf &
3. redis关闭命令
redis-cli shutdown
4. redis设置key-value
进入redis中,set yang 123
5. redis获取key的值
进入redis中,get yang
6. redis删除key
进入redis中,del yang
7. redis查看key是否存在
进入redis中,exists yang
存在返回1,不存在返回0.
8. redis取出所有的key
进入redis中,keys * 这个命令要慎用,因为key太多
9. info查看当前redis的一些状态
进入redis中,info
10. config在线修改参数
congfig set appendonly no 设置appendonly为no
config get * 查看所有参数,不需要查看配置文件
11. monitor
12. redis-benchmark -h localhost -p 6379 -c -n 100000
13. 查看key的类型
type key_name
返回的类型名称
7. Redis默认有16个库
1. 在redis的配置文件中,可以看到redis有16个库,从0-15。
2. redis切换库,select 1 select 0
8. 连接redis的方式
1. 交互式 需要登录到redis中
2. 非交互式 直接使用redis-cli get yang
3. telnet 通过telnet连接到redis,然后其他就跟交互式的方式一样了

浙公网安备 33010602011771号