Redis(Remote Dictionary Server)是一个支持网络、基于内存、分布式、可选持久性的键值对存储数据库。
安装
yum -y install redis
# 测试
[root@localhost ~]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
# 远程连接
redis-cli -h host -p port -a password
# 报错
[root@localhost ~]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
# 解决(因为没启动)
[root@localhost ~]# systemctl status redis
○ redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; preset: disabled)
Drop-In: /etc/systemd/system/redis.service.d
└─limit.conf
Active: inactive (dead)
[root@localhost ~]# systemctl start redis
配置
# 查看所有配置
127.0.0.1:6379> CONFIG GET *
# 修改配置
127.0.0.1:6379> CONFIG SET <设置名> <新值>
数据类型
- string(字符串): 基本的数据存储单元,可以存储字符串、整数或者浮点数。
- hash(哈希):一个键值对集合,可以存储多个字段。
- list(列表):一个简单的列表,可以存储一系列的字符串元素。
- set(集合):一个无序集合,可以存储不重复的字符串元素。
- zset(sorted set:有序集合): 类似于集合,但是每个元素都有一个分数(score)与之关联。
- 位图(Bitmaps):基于字符串类型,可以对每个位进行操作。
- 超日志(HyperLogLogs):用于基数统计,可以估算集合中的唯一元素数量。
- 地理空间(Geospatial):用于存储地理位置信息。
- 发布/订阅(Pub/Sub):一种消息通信模式,允许客户端订阅消息通道,并接收发布到该通道的消息。
- 流(Streams):用于消息队列和日志存储,支持消息的持久化和时间排序。
- 模块(Modules):Redis 支持动态加载模块,可以扩展 Redis 的功能。
操作
序号 | 命令及描述 |
---|---|
1 | DEL key 该命令用于在 key 存在时删除 key。 |
2 | DUMP key 序列化给定 key ,并返回被序列化的值。 |
3 | EXISTS key 检查给定 key 是否存在。 |
4 | EXPIRE key seconds 为给定 key 设置过期时间,以秒计。 |
5 | EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 |
6 | PEXPIRE key milliseconds 设置 key 的过期时间以毫秒计。 |
7 | PEXPIREAT key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计 |
8 | KEYS pattern 查找所有符合给定模式( pattern)的 key 。 |
9 | MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。 |
10 | PERSIST key 移除 key 的过期时间,key 将持久保持。 |
11 | PTTL key 以毫秒为单位返回 key 的剩余的过期时间。 |
12 | TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。 |
13 | RANDOMKEY 从当前数据库中随机返回一个 key 。 |
14 | RENAME key newkey 修改 key 的名称 |
15 | RENAMENX key newkey 仅当 newkey 不存在时,将 key 改名为 newkey 。 |
16 | [SCAN cursor [MATCH pattern] [COUNT count]](https://www.runoob.com/redis/keys-scan.html) 迭代数据库中的数据库键。 |
17 | TYPE key 返回 key 所储存的值的类型。 |
实际操作
字符串
redis 127.0.0.1:6379> SET test "HelloWarld!"
OK
redis 127.0.0.1:6379> GET test
"HelloWarld!"
累了
安全
# 查看是否开启密码
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
# 设置密码
127.0.0.1:6379> CONFIG set requirepass "123456"
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "123456"
# 测试(重进之后)
127.0.0.1:6379> SET abc 111
(error) NOAUTH Authentication required.
# 登录
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> GET test
"HelloWorld!"
备份 / 集群
# 备份(保存到 redis 安装目录中的 dump.rdb 文件)
127.0.0.1:6379> SAVE
# 获取安装目录
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis"
# 后台备份
127.0.0.1:6379> BGSAVE
主从备份
redis十分的方便啊,主服务器默认接受从服务器请求,不需要配置
从服务器配置:
127.0.0.1:6379> config set port 6380
OK
127.0.0.1:6379> exit
[root@localhost ~]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
redis-cli -p 6380
# 加入
127.0.0.1:6380> REPLICAOF 192.168.10.3 6379
# 纠错
# 如果无法获取,请检查
防火墙
# 主
CONFIG SET bind "0.0.0.0 -::1"
CONFIG SET protected-mode "no"
# 从
replicaof no one # 清除
replicaof 192.168.10.3 6379 # 再加入
集群
所有节点都需要配置,使用CONFIG SET CONFIG_NAME SET_CONFIG_VALUE
# 节点端口号(每个节点都设置不同的!!)
port 7001
# 开启集群模式
cluster-enabled yes
# 节点超时时间
cluster-node-timeout 15000
十分不好消息:下面这个文档我没看懂... 点我自己看原文大脑升级
像这样的配置,一共需要创建6个,我们做一个三主三从的集群。
启动Redis节点:使用如下命令启动6个节点:
redis> redis-server redis_7001.conf
创建Redis Cluster:使用Redis命令行工具执行如下命令创建Cluster:
redis> redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
cluster-replicas 表示从节点的数量,1代表每个主节点都有一个从节点。
- 验证Cluster模式:向Cluster发送请求,观察请求是否正确路由到相应的节点。
没有评论