简介
什么是缓存?
缓存就是将数据存放在距离计算机最近的位置以加快处理速度。缓存是改善软件性能的第一手段,在复杂的软件设计中,缓存几乎无处不在。大型网站架构设计在很多方面都使用了缓存设计。Redis就是目前缓存的主流技术。
缓存主要用来存放那些读写比较高、很少变化的数据,应用程序读取数据时,先到缓存中读取,如果读取不到或数据已失效,再访问数据库,并将数据写入缓存。
Redis是Nosql数据库中使用较为广泛的非关系型内存数据库,Redis内部是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型,类似于Java中的map)。
Redis基于内存运行(读写速度远快于硬盘)并支持持久化到磁盘的NoSQL数据库,是当前最热门的NoSql数据库之一。性能极高 , Redis能读的速度是110000次/s,写的速度是81000次/s 。
Redis操作语言相比SQL要简单,基于C语言开发,代码量只有3万多行,运行稳定。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
一,准备工作
1.下载 http://download.redis.io/releases/redis-5.0.9.tar.gz,复制到安装主机/home目录下。
2.修改/etc/security/limits.conf,添加如下内容:
* soft nofile 65535
* hard nofile 65535
3.修改主机名:hostnamectl set-hostname <主机名>
4.安装gcc依赖包:yum install gcc –y
5.查看透明大页是否开启:
cat /sys/kernel/mm/transparent_hugepage/enabled
输出结果为[always]表示启用, [never]表示禁用
如果是启用状态,需要禁用,透明大页可能导致redis延迟和内存使用问题。修改/etc/default/grub如下内容:
GRUB_CMDLINE_LINUX="... transparent_hugepage=never“
执行命令:执行生效命令 grub2-mkconfig -o /boot/grub2/grub.cfg
或者执行临时禁用命令:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
6.修改/etc/sysctl.conf ,添加如下内容:
vm.overcommit_memory=1 #表示内核允许分配所有的物理内存
net.core.somaxconn=65535 #表示socket监听(listen)的backlog监听队列上限
查询命令: sysctl -p
7.创建数据和日志目录:
mkdir -p /data/redis/logs
mkdir -p /data/redis/data
8.关闭selinux,修改/etc/sysconfig/selinux:
SELINUX=disabled
查询命令:getenforce
临时禁用命令:setenforce 0
9.创建redis用户:
groupadd redis
useradd -r -g redis redis
passwd redis
10.为数据和日志目录授权
chown -R redis:redis /data/redis/logs
chown -R redis:redis /data/redis/data
10.重启服务器:
reboot
二.安装部署
1.解压
cd /home
tar -xzvf redis-5.0.9.tar.gz -C /usr/local/
2.编译安装并授权
cd /usr/local/redis-5.0.9/src
make && make install
chown -R redis:redis /usr/local/redis-5.0.9
3.配置环境变量,修改/etc/profile,添加如下内容:
export PATH=$PATH:/usr/local/redis-5.0.9/src
source /etc/profile
4.更新配置文件/usr/local/redis-5.0.9/redis.conf
daemonize yes #默认以后台程序方式运行
pidfile /data/redis/logs/redis_6379.pid #pid文件路径
bind 127.0.0.1 192.168.0.1 #对外访问IP
port 6379 #对外访问端口
timeout 60 #客户端访问超时
loglevel warning #日志级别
logfile “/data/redis/logs/redis-server-6379.log” #日志文件路径
databases 16 #数据库数量
dbfilename dump-6379.rdb #数据快照文件名称
dir /data/redis/data #持久化数据存储目录
requirepass 123456 #redis访问密码
maxclients 10000 #客户端并发访问连接数
maxmemory 1gb #内存使用上限
maxmemory-policy volatile-lru #清除最近最少使用的到期键值内存占用
appendonly yes #开启持久化机制
appendfilename “appendonly6379.aof“ #持久化文件名
appendfsync everysec #每秒一次同步到磁盘
no-appendfsync-on-rewrite yes #重写期间对aof新记录暂缓使用文件同步
auto-aof-rewrite-percentage 100 #当aof增长超过一倍,重写aof文件
auto-aof-rewrite-min-size 64mb #触发aof 重写的最小文件大小
slowlog-log-slower-than 10000 #慢查询时间,单位微秒
slowlog-max-len 1024 #慢查询最大条数
hz 50 #提高cpu使用量,加快响应速度,更精确地处理超时,不建议超过100
aof-rewrite-incremental-fsync yes #每生成32M数据会被同步到aof文件
5.启动redis
su redis
redis-server /usr/local/redis-5.0.9/redis.conf
6.配置开机自启动,创建/etc/systemd/system/redis.service,添加如下内容:
[Unit]
Description=redis-server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
User=redis
Group=redis
Type=forking
PIDFile=/data/redis/logs/redis_6379.pid
ExecStart=/usr/local/redis-5.0.9/src/redis-server /usr/local/redis-5.0.9/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重载系统服务:systemctl daemon-reload
开机自启:systemctl enable redis.service
Redis常用命令
ping:测定连接是否存活 select:选择数据库
quit:退出连接 dbsize:返回当前数据库中key的数目
info:获取服务器的信息和统计 config get 配置项:获取服务器配置的信息
config set 配置项 值:设置配置项信息 flushdb:删除当前选择数据库中所有的key
flushall:删除所有数据库中的所有的key shutdown [save/nosave]:停服
showlog:显示慢查询 get key:取值
set key value:建值