Redis介绍
Redis https://redis.io 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis使用
- Redis命令 redis完整的命令列表,以及他们的说明文档。
- 管道(Pipelining):学习如何一次发送多个命令,节省往返时间。
- Redis 发布/订阅(Pub/Sub):redis是一个快速、稳定的发布/订阅的信息系统。
- Redis Lua 脚本:Redis 2.6 Lua 脚本相关文档。
- Lua 脚本调试:Redis 3.2 Lua 脚本调试相关文档。
- 内存优化:了解如何使用内存和学习一些使用技巧。
- 过期(Expires):Redis允许为每一个key设置不同的过期时间,当它们到期时将自动从服务器上删- 除。
- 将Redis当做使用LRU算法的缓存来使用:如何配置并且将Redis当做缓存来使用,通过限制内存及自动回收键。
- Redis 事务:将一组命令放在同一个事务中进行处理。
- 大量插入数据:如何在短时间里向Redis写入大量数据。
- 从文件中批量插入数据:将文件中的指令批量执行。
- 分区(Partitioning):如何将你的数据分布在多个Redis里面。
- 分布式锁(Distributed locks):用Redis实现分布式锁管理器。
- key事件通知(Redis keyspace notifications):通过发布/订阅获得key事件的通知(版本2.8或更高)。
- 创建二级索引(Creating secondary indexes with Redis):使用redis的数据结构创建二级索引。
Redis管理
- Redis-Cli:学习怎么通过命令行使用redis。
- 配置(Configuration):怎么配置 redis。
- 复制(Replication):你需要知道怎么设置主从复制。
- 持久化(Persistence):了解如何配置redis的持久化。
- Redis 管理(Redis Administration):学习redis管理方面的知识。
- 安全性(Security):概述Redis的安全。
- 加密(encryption):如何加密redis的客户端与服务端通信。。
- 信号处理(Signals Handling):如何处理Redis信号。
- 连接处理(Connections Handling):如何处理Redis客户端连接。
- 高可用性(High Availability):Redis Sentinel是Redis官方的高可用性解决方案。目前工作进展情况(beta阶段,积极发展),已经可用。
- 延迟监控(Latency monitoring):redis集成的延迟监控和报告功能对于为低延迟应用场景优化redis很有帮助。
- 基准(Benchmarks):看看Redis在不同平台上跑得有多快。
- Redis Releases:Redis的开发周期和版本编号。
Redis安装
1. 配置编译环境
sudo yum install gcc-c++
2. 安装Redis
编译安装Redis
cd /usr/local/src
wget http://download.redis.io/releases/redis-4.0.2.tar.gz
tar zxvf redis-4.0.2.tar.gz
cd redis-4.0.2
make
配置Redis
# 创建存储redis文件目录
mkdir /usr/local/redis
# 复制redis-server redis-cli到新建立的文件夹
cp /usr/local/src/redis-4.0.2/src/redis-server /usr/local/redis/
cp /usr/local/src/redis-4.0.2/src/redis-cli /usr/local/redis/
# 复制redis的配置文件
cp /usr/local/src/redis-4.0.2/redis.conf /usr/local/redis/
编辑配置文件
vim /usr/local/redis/redis.conf
# 将bind 127.0.0.1前的“#”注释去掉
bind 127.0.0.1
# 默认为保护模式,把 protected-mode yes 改为 no
protected-mode no
# 默认为不守护进程模式,把daemonize no 改为 yes
daemonize yes
# 将 requirepass foobared 前的“#”去掉,密码(foobared)改为你想要设置的密码
requirepass 123456 # 密码 123456
编辑Redis操作脚本
vim /etc/init.d/redis
#!/bin/sh
# chkconfig: 2345 80 90
# description: Start and Stop redis
#PATH=/usr/local/bin:/sbin:/usr/bin:/bin
REDISPORT=6379 # 端口
EXEC=/usr/local/redis/redis-server # redis-server所在路径
REDIS_CLI=/usr/local/redis/redis-cli # redis-cli所在路径
PIDFILE=/var/run/redis_6379.pid
CONF="/usr/local/redis/redis.conf" # redis配置文件所在路径
AUTH="123456" # 密码 123456
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
if [ "$?"="0" ]
then
echo "Redis is running..."
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
while [ -x ${PIDFILE} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
设置权限及开机启动
chmod 755 /etc/rc.d/init.d/redis
chkconfig redis on
Redis操作指令
# 打开服务
service redis start
# 重启服务
service redis restart
# 关闭服务
service redis stop
CentOS 7 Redis 操作脚本
vim /etc/systemd/system/redis-server.service # 编辑脚本
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
:wq! #保存退出
# 开机自启动
systemctl enable redis-server.service
# 开启服务
systemctl start redis-server.service
# 重启服务
systemctl restart redis-server.service
# 停止服务
systemctl stop redis-server.service
# 查看服务状态
systemctl start redis-server.service
网友评论