redis简介
(1)存储系统
①分类图示:
②nosql 网站:http://www.nosql-databases.org/
(2)redis简介
①官网地址:https://redis.io/
②Redis(Remote Dictionary Server)在2009年发布,开发者Salvatore Sanfilippo是意大利开发者。redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis提供将内存通过网络远程共享的一种服务,提供类似功能的还有memcache,但相比memcache,redis还提供了易扩展、高性能、具备数据持久性等功能。
③DB-Engine:https://db-engines.com/en/ranking
(3)redis简述
①redis是什么?
- key-value cache and store(键值缓存和存储)
②redis用途:
- 存储和数据结构服务器:提供一个数据结构远程存储功能。
③redis支持存储的数据格式:
- 字符串(string)、列表(list)、哈希(hash)、集合(set)、有序集合(sored set)、消息队列
④redis是单进程服务,单进程响应所有用户请求。
⑤redis所有数据集均保存在内存中,所有数据集都必须在内存中才能使用。数据支持持久化,但是数据持久化仅仅是为了redis在下次启动时仍然有数据存在,而不是为了数据的访问,体现的是一种冗余能力。
⑥支持master-slave集群架构,以实现redis的高可用,还可以将用户的写和查询分散至不同的节点,以实现负载均衡。
(4)redis典型应用场景
①Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享
②消息队列:ELK的日志缓存、部分业务的订阅发布系统
③计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景
④缓存:数据库查询缓存、电商网站商品信息、新闻内容
⑤微博/微信社交场合:共同好友、点赞评论等
redis安装
源码安装redis
①官方下载地址:http://download.redis.io/releases/
②编译安装redis步骤:
a、获取源码包并解压缩
[root@centos7-17 ~]# cd /usr/local/src/
[root@centos7-17 src]# wget http://download.redis.io/releases/redis-4.0.14.tar.gz
[root@centos7-17 src]# tar xf redis-4.0.14.tar.gz
[root@centos7-17 src]# cd redis-4.0.14/ ##进入解压后的目录
b、查看安装帮助
[root@centos7-17 redis-4.0.14]# vim README.md
You can use `make PREFIX=/some/other/directory install` if you wish to use adifferent destination.
# make install ## 默认会将redis安装在当前目录。可以使用 PREFIX=/PATH 指定安装路径
c、make install #因为源码包中Makefile文件已经存在
[root@centos7-17 redis-4.0.14]# make PREFIX=/apps/redis install
注:如果因为没有安装gcc而导致编译失败,那么将gcc安装,重新解压redis源码,再次编译即可。
d、查看安装目录
[root@centos7-17 redis-4.0.14]# ll /apps/redis/
drwxr-xr-x 2 root root 134 Nov 13 09:34 bin
##仅有bin目录。
e、创建所需目录(规划是将redis相关的文件全部放置于/apps/redis/目录中)
[root@centos7-17 redis-4.0.14]# mkdir /apps/redis/{etc,logs,data,run}
f、准备配置文件:##解压目录下有redis的模板配置文件
[root@centos7-17 redis-4.0.14]# cp redis.conf /apps/redis/etc/
g、将/apps/redis/bin/的可执行程序导入PATH变量中 ##此处导入的目录是/usr/local/bin/目录
[root@centos7-17 bin]# ln -s /apps/redis/bin/* -t /usr/local/bin/
h、准备redis的service文件,使用systemd管理redis
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
i、启动文件中的启动用户为redis用户,因此准备redis用户
[root@centos7-17 redis-4.0.14]# groupadd redis -g 2019 && useradd redis -u 2019 -g 2019 -s /sbin/nologin
j、授予redis用户权限/aaps/redis/目录
[root@centos7-17 redis-4.0.14]# chown -R redis.redis /apps/redis/
k、修改模板配置文件:
[root@centos7-17 redis-4.0.14]# vim /apps/redis/etc/redis.conf
bind 0.0.0.0
pidfile /apps/redis/run/redis_6379.pid
requirepass 123456 ##设置认证口令
- 注:以上配置后redis安装完成,但是如果前台启动redis时,redis会有如下三个的WARNING。(WARNING不是error也可以运行redis)
[root@centos7-17 redis-4.0.14]#/usr/local/bin/redis-server /apps/redis/etc/redis.conf
a、tcp-backlog的警告:##backlog参数控制的是三次握手的时候server端收到client ack确认号之后的队列值。
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
由于系统设置的backlog是128,redis配置文件中backlog值为511
解决方案:一般修改内核参数:
[root@centos7-17 ~]# vim /etc/sysctl.conf
net.core.somaxconn = 512
[root@centos7-17 ~]# sysctl -p
b、vm.overcommit_memory
0、表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1、表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2、表示内核允许分配超过所有物理内存和交换空间总和的内存
redis要求将vm.overcommit_memory = 1
[root@centos7-17 ~]# vim /etc/sysctl.conf
vm.overcommit_memory = 1
[root@centos7-17 ~]# sysctl -p
c、Transparent Huge Pages (THP) ##大页内存动态分配,需要关闭让redis 负责内存管理。
[root@centos7-17 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
此内核参数仅支持echo形式的修改。
- 注:上述redis只做了最简单的配置,待redis常用配置修改完成之后,就可将安装的redis打包,为后面的redis集群做准备。
常用配置:
bind 0.0.0.0
requirepass 123456
pidfile /apps/redis/run/redis_6379.pid
logfile "/apps/redis/logs/redis.log"
save 900 1
save 300 10
save 60 10000
dbfilename "redis-6379.rdb"
dir "/apps/redis/data/"
redis工具
- #ln -s /apps/redis/bin/* -t /usr/local/bin/
- ##被软链至/usr/local/bin/目录下咯
[root@centos7-17 ~]# ll /apps/redis/bin/
-rwxr-xr-x 1 redis redis 2452176 Nov 13 09:34 redis-benchmark #redis性能测试工具
-rwxr-xr-x 1 redis redis 5777752 Nov 13 09:34 redis-check-aof #AOF文件检查工具
-rwxr-xr-x 1 redis redis 5777752 Nov 13 09:34 redis-check-rdb #RDB文件检查工具
-rwxr-xr-x 1 redis redis 2618208 Nov 13 09:34 redis-cli #客户端工具
lrwxrwxrwx 1 redis redis 12 Nov 13 09:34 redis-sentinel -> redis-server #哨兵,软连接到server
-rwxr-xr-x 1 redis redis 5777752 Nov 13 09:34 redis-server #redis 服务启动命令
Windows安装redis
①Windows版 Redis下载地址:https://github.com/MicrosoftArchive/redis/releases
- 注:强烈不推荐在生产环境使用Windows 系统运行Redis服务。
②解压后的目录:
③编辑配置文件并执行redis-server.exe
C:\Users\weirdo>cd C:\Users\weirdo\Desktop\redis
C:\Users\weirdo\Desktop\redis>redis-server.exe redis.windows.conf