REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
在日常Web开发中,通常情况下我们都是使用关系型数据库如:MySQL,Oracle,PostgreSQL等进行数据存储,但是在应对一些特殊场景(如:抢购,秒杀等),用户请求激增的情况下,由于数据库是面向磁盘进行读写来存储数据,一瞬间大量请求进来,需要系统在很短的时间内进行成千上万次请求,这个时候往往不是数据库和磁盘的读写能够承受的,极易导致数据库系统瘫痪,最终导致服务器宕机.为了应对和解决这种情况我们引入了Redis,Redis是基于内存的数据库,它的性能非常优越,Redis能读的速度是110000次/s,写的速度是81000次/s ,其性能远超数据库.并且Redis也具备事务能力,这很好的保证了高并发情况下数据的一致性与安全性.
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -zxvf redis-5.0.5.tar.gz
cd redis-5.0.5
make
cd src
# 如果默认使用默认安装路径(/usr/local/bin)则直接使用如下命令
sudo make install
# 如果安装到指定的目录则添加一个参数PREFIX
sudo make install PREFIX=/usr/local/redis
安装完成后进入/usr/local/redis目录可以看到有一个bin目录
文件介绍:
至此Redis安装完成,但是还需要修改一些基础配置,以便于我们更方便的使用redis
sudo mkdir /usr/local/redis/etc
sudo cp redis.conf /usr/local/redis/etc/
2.打开redis.conf修改以下几个地方
sudo vi /usr/local/redis/etc/redis.conf
# 注释掉bind 127.0.0.1,bind用于限制访问Redis的机器ip,直接关掉,方便后续做集群或其他客户端进行连接
# bind 127.0.0.1
# 修改daemonize no为yes,让Redis可以后台启动
deamonize yes
# 配置日志文件目录logfile ""
logfile "/use/local/redis/log/redis_log.log"
# 为Redis添加服务密码# requirepass foobared,这里我们将密码设置为123456
requirepass 123456
# 修改rdb文件存储路径,rdb文件是Redis默认的数据持久化到磁盘的文件,默认配置为dir ./,则存储在相对目录
# 即每次运行redis-server的目录,这里我们修改为绝对路径,以便于后续的管理
dir /usr/local/redis/rdb/
#:wq 保存并退出
上述配置修改完成后,由于我的用户不是root,没法直接操作/usr/local/redis下的目录,因此无法写入日志文件和将数据持久化到磁盘,所以在启动服务之前,需要先修改相应的文件权限
# 创建log目录
sudo mkdir /usr/local/redis/log
# 创建log文件
sudo touch /usr/local/redis/log/redis_log.log
# 给log文件添加所有用户的写权限
sudo chmod a+w /usr/local/redis/log/redis_log.log
# 创建存放rdb文件的目录
sudo mkdir /usr/local/redis/rdb
# rdb文件的目录添加读写权限
sudo chmod a+w /usr/local/redis/rdb/
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
运行完成后我们可以查看Redis的日志是否运行正常
tail -100f /usr/local/redis/log/redis_log.log
使用redis自带的客户端工具对Redis进行连接
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a "123456"
# 参数说明
# -h Redis服务端ip
# -p Redis服务端端口,默认是6379
# -a Redis服务端密码,之前步骤中设置的123456
连接进去之后我们可以简单尝试一下Redis存储数据和取出数据
# 添加key为name,值为purepgmr的数据
set name purepgmr
# 获取key为name的数据
get name
如果Redis安装完成后,本地可以连接,其他机器无法连接,且在redis.conf中注释了bind,则可以检查一下是否没有关闭防火墙.
CentOS7关闭防火墙
# 停止firewall服务
systemctl stop firewalld.service
# 关闭firewall开机自启
systemctl disable firewalld.service
# 方法一:
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a "123456" shutdown
# 方法二:
# 连接进入Redis
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a "123456"
# 执行shutdown命令
shutdown
如果执行shutdown提示关闭服务失败,首先肯定是先去检查Redis的日志文件
我这边遇到过日志文件权限问题,给日志文件赋予对应的权限就可以了
目前我用过比较好用的Redis客户端就是Redis Desktop Manager,该客户端同时支持了Windows,MAC,Linux.
参考:
菜鸟教程Redis简介
Redis【入门】就这一篇!