redis 简介
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。
传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。Redis是nosql(也是个巨大的map) 单线程,但是可处理1秒10w的并发(数据都在内存中)
- Github 源码:https://github.com/antirez/redis
- Redis 官网:https://redis.io
简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
Redis是一个 key-value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
安装
# 源码安装
wget https://download.redis.io/releases/redis-6.2.1.tar.gz
tar xzf redis-3.0.6.tar.gz
cd redis-3.0.6
make
# 启动服务端
src/redis-server &
src/redis-server ./redis.conf & # 指定配置文件
# 检测后台进程是否存在
ps -ef |grep redis
# 检测6379端口是否在监听
netstat -lntp | grep 6379
# 停止
redis-cli shutdown # 使用客户端
kill -9 PID # 因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的
配置文件
可为redis服务启动指定配置文件,配置文件redis.conf
在Redis根目录下。
# 修改daemonize为yes,即默认以后台程序方式运行(还记得前面手动使用&号强制后台运行吗)。
daemonize no
# 可修改默认监听端口
port 6379
# 修改生成默认日志文件位置
logfile "/home/futeng/logs/redis.log"
# 配置持久化文件存放位置
dir /home/futeng/data/redisData
使用Redis启动脚本设置开机自启动
启动脚本
推荐在生产环境中使用启动脚本方式启动redis服务。启动脚本redis_init_script
位于位于Redis的/utils/
目录下。
# 大致浏览下该启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。
# redis服务器监听的端口
REDISPORT=6379
# 服务端所处位置,在make install后默认存放与\`/usr/local/bin/redis-server\`,如果未make install则需要修改该路径,下同。
EXEC=/usr/local/bin/redis-server
# 客户端位置
CLIEXEC=/usr/local/bin/redis-cli
# Redis的PID文件位置
PIDFILE=/var/run/redis\_${REDISPORT}.pid
# 配置文件位置,需要修改
CONF="/etc/redis/${REDISPORT}.conf"
配置环境
- 根据启动脚本要求,将修改好的配置文件以端口为名复制一份到指定目录。需使用root用户。
mkdir /etc/redis
cp redis.conf /etc/redis/6379.conf
- 将启动脚本复制到/etc/init.d目录下,本例将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)。
cp redis\_init\_script /etc/init.d/redisd
- 设置为开机自启动,此处直接配置开启自启动
chkconfig redisd on
将报错误:service redisd does not support chkconfig
** 参照此篇文章,在启动脚本开头添加如下两行注释以修改其运行级别:
#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
#
- 再设置即可成功。
# 设置为开机自启动服务器
chkconfig redisd on
# 打开服务
service redisd start
# 关闭服务
service redisd stop
相关命令
# 查看服务端版本
redis-server -v
redis-server --version
# 查看客户端版本
redis-cli -v
redis-cli --version
# 启动客户端
src/redis-cli
# 使用
redis> set foo bar
OK
redis> get foo
"bar"