- A+
所属分类:Redis
Redis是一个开源的、高性能的键值对存储系统,通常被用作数据库、缓存和消息代理。它支持多种类型的数据结构,如字符串、散列、列表、集合、有序集合等
主要特点
高性能:Redis以内存为主存,读写迅速。支持异步持久化,后台硬盘存储,前台操作无影响;
数据结构丰富:不仅键值对,还支持列表、集合、有序集合及地理空间索引查询等复杂结构;
持久化能力:作为内存数据库,提供持久化选项,可硬盘保存数据,防数据丢失;
高可用性:实现主从复制,确保数据高可用。提供哨兵与集群模式,自动故障转移及分布式存储;
事务支持:具备事务功能,确保命令序列原子性执行,维护数据一致性;
发布/订阅:内置发布/订阅机制,适用于消息队列、实时消息推送等应用场景;
Lua脚本执行:支持Lua脚本,服务器端直接执行复杂操作,减少网络往返通信;
使用简便:提供多语言客户端库,如Python、Java、C++等,方便开发者集成使用;
应用广泛:凭借高性能与多功能,广泛应用于缓存、会话、排行榜、消息队列、分布式锁等场景。
安装Redis
安装Redis依赖
yum -y install openssl-devel
下载Redis包
wget https://download.redis.io/releases/redis-7.0.15.tar.gz
解压
tar xvf redis-7.0.15.tar.gz
进入解压后的目录
cd redis-7.0.15/
编译Redis
make BUILD_TLS=yes
安装Redis
make install PREFIX=/usr/local/redis-7.0.15
建立软连接
ln -s /usr/local/redis-7.0.15/ /usr/local/redis
创建配置文件目录,把配置文件复制过去
mkdir -p /usr/local/redis/etc
cp redis.conf /usr/local/redis/etc/
修改配置文件
vim /usr/local/redis/etc/redis.conf
bind 0.0.0.0 //允许所有IP连接
protected-mode yes //启用保护模式,限制未认证的访问
port 6379 //监听端口6379
daemonize yes //以守护进程运行
pidfile /usr/local/redis/run/redis_6379.pid //进程ID文件位置
logfile "/usr/local/redis/logs/redis.log" //日志文件路径
databases 16 //设置16个数据库
save 3600 1 300 100 60 10000 //快照保存条件
dbfilename dump.rdb //快照文件名
dir /data/redis //数据存储目录
requirepass xxx.com //设置密码为xxx.com
appendonly yes //开启AOF持久化
appendfilename "appendonly.aof" //AOF文件名
appenddirname "appendonlydir" //AOF文件目录
appendfsync everysec //每秒同步AOF文件
创建数据目录,运行文件和日志文件目录
mkdir -p /data/redis
mkdir -p /usr/local/redis/{run,logs}
创建用户并授权
useradd -s /sbin/nologin -M redis
chown -R redis:redis /usr/local/redis*
chown -R redis:redis /data/redis/
配置开机自启动文件
vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
PIDFile=/usr/local/redis/run/redis_6379.pid
Restart=always
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
开机自启并启动Redis
systemctl daemon-reload
systemctl enable --now redis.service
登录Redis
/usr/local/redis/bin/redis-cli -h localhost -p 6379
localhost:6379> AUTH xxx.com
OK
localhost:6379> INFO

Redis常用命令
字符串(Strings)
SET xxx "username" //设置键'xxx'的值为'username'
GET xxx //获取键'xxx'的值
INCR xxx:visits //将键'xxx:visits'的值增加1
APPEND xxx "_jr" //在键'xxx'的值后追加字符串'_jr'
哈希(Hashes)
HSET xxx username "name-A" //设置哈希表'xxx'中的字段'username'为'name-A'
HGET xxx username //获取哈希表'xxx'中的字段'username'的值
HGETALL xxx //获取哈希表'xxx'中的所有字段和值
HINCRBY xxx visits 1 //将哈希表'xxx'中的字段'visits'的值增加1
HSETNX xxxx newfield "value" //增加哈希表'xxx'中的字段'value'
HDEL xxx username //删除哈希表'xxx'中的字段'username'
列表(Lists)
LPUSH xxx:tasks "task_1" //将值'task_1'插入到列表'xxx:tasks'的头部
RPUSH xxx:tasks "task_2" //将值'task_2'插入到列表'xxx:tasks'的尾部
LRANGE xxx:tasks 0 -1 //获取列表'user:1000:tasks'中的所有元素
LPOP xxx:tasks //移除并获取列表'xxx:tasks'的第一个元素
集合(Sets)
SADD xxx:interests "music" //向集合'xxx:interests'添加元素'music'
SADD xxx:interests "sports" //向集合'xxx:interests'添加元素'sports'
SMEMBERS xxx:interests //获取集合'xxx:interests'中的所有元素
SREM xxx:interests "music" //从集合'xxx:interests'中移除元素'music'
有序集合(Sorted Sets)
ZADD xxx:scores 90 "math" //向有序集合'xxx:scores'添加成员'math',分数为90
ZADD xxx:scores 85 "english" //向有序集合'xxx:scores'添加成员'english',分数为85
ZRANGE xxx:scores 0 -1 WITHSCORES //取有序集合'xxx:scores'中的所有成员和分数
ZREM xxx:scores "math" //从有序集合'xxx:scores'中移除成员'math'
键(Keys)
KEYS user:* //查找所有以'user:'开头的键
DEL user:1000:tasks //删除键'user:1000:tasks'
EXISTS user:1000 //检查键'user:1000'是否存在
EXPIRE user:1000 3600 //设置键'user:1000'的过期时间为3600秒
TTL user:1000 //获取键'user:1000'的剩余过期时间