redis 默认有16个数据库 0 -15
redis 读110000 写80000
redis-cli 启动redis命令
set name '111' 设置key
get name 获取key
del name 删除key
setex name 100 ‘111’ 设置key的有效期
ttl name 查看key的有效期
mset name ‘11’ age ‘12’ 设置多个
gset name age 获取多个
append name ‘拉拉’ 追加字符串
keys * 查看所以key
exists name 判断key是否存在 返回1 和 0
type name 判断类型
expire name 10 给没有过期时间的ket 设置一个时间
# list类型 列表 数组
lpush name 111 向左插入
rpush name 111 向右插入
lrange name 0 -1 查看所以数据
lrange name 0 0 查看第一个元素
lrem name 1 222 删除 一个 222
lset name 0 ’更新‘ 更新内容
linsert name before/after lisi abc 在lisi前面插入abc
# hash obj
hset name age 18 设置单个hash
hmset name age 18 username ‘张三’ 设置多个hash
hget name age 查看单个hash
hmget name age username 查看多个hash
del name 删除整个hash
hdel name age 删除熟悉age
hgetall name 获取所以的键和值
hvals name 获取所有的值
hkeys name 获取所有的key
# set 集合
sadd name 1 2 3 4 5 添加集合
smembers name 查看集合
srem name 删除集合
# zset 有序集合
zadd name 100 zhangsan 50 age 添加集合 权重 value
zrange name 0 -1 查询集合
zrangebyscore name 100 60 获取以权重直接的值
zscore name zhangsan 获取对于的权重
zrem name zhangsan 删除集合熟悉
zremrangebyscore name 100 60 删除集合制定熟悉
# python3 使用redis
pip3 install redis
# python 使用redis代码
# encoding=utf-8
import redis
if __name__ == '__main__':
try:
rs = redis.Redis()
except Exception as e:
print(e)
# print(r.set('foo', 'bar'))
dd = rs.get('name')
print(dd)
# 主从复制
#主服务器 有读写权限
ifconfig 查看主机ip
/etc/redis/redis.conf 修改成 bind 192.168.1.108[主机ip]
重启一下redis
# 从服务器 只读权限
ifconfig 查看主机ip
/etc/redis/redis.conf 修改成 bind 192.168.1.102[主机ip] 曾加 selveof 192.168.1.108 6379[主服务器的ip和端口]
重启一下redis
#测试 是否成功
在主服务器上 redis-cli 192.168.1.108 -p6379 #链接到master 主
在从服务器上 redis-cli 192.168.1.150 -p6379 #链接到slave1
在主redis上 添加一个 字段 set name ‘我是主’ , 看看从服务器能否获取到 get name
# 阿里月服务需要开启 安全组端口 但是我发现开启端口也没用 以下可以解决 但是不安全
# 1.把绑定ip的地方注释掉。bind:127.0.0.1 2, 把保护模式改为no 3,阿里云安全组设置开放6379端口。
port 7000 //端口7000,7002,7003
bind 47.104.210.67 //改为其他节点机器可访问的ip 可以使用ifconfig查看一下
daemonize yes //redis后台运行
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
#pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行修改
# redis集群
1.安装redis
2.在redis配置目录 src目录下面/目录下面有 redis-server redis-trib.rb 创建节点目录 7000目录 70001目录 ... 70005目录
3.在目录下面 创建配置文件 7000.conf 70001.conf 对应文件目录,下面是配置文件代码
port 7000 //端口
bind 192.168.229.144 //本机ip
daemonize yes //守护进程/redis后台运行
pidfile 7000.pid //redis对于的pid文件
cluster-enabled yes // 开启集群
cluster-config-file 7000_node.conf //集群的配置文件 首次自动生成
cluster-node-timeout 15000 // 请求超时 默认15秒
appendonly yes // aof日志开启 有需要就开启,它会每次写操作都记录一条日志
4.启动各个节点 在redis/src目录下面
./redis-server ./7000/7000.conf
./redis-server ./7001/7002.conf
......
./redis-server ./7005/7005.conf
5.检测一下 节点是否开启成功 ps -ef | grep redis
6.在创建集群前需要安装ruby,因为redis-trib.rb需要使用ruby
sudo apt install ruby
7.启动集群命令
# 网上都是使用下面这个命令 (命令的中的 1 代表 1个从服务器)
redis-trib.rb create --replicas 1 192.168.255.128:7000 ....... 192.168.255.128:7005
# 我安装的redis5.08 推荐我使用以下命令
redis-cli --cluster create 111.47.185.188:8000 111.47.185.188:8001 111.47.185.188:8002 111.47.185.188:8003 111.47.185.188:8004 111.47.185.188:8005 --cluster-replicas 1
下面此处一定要打yes 不要只打 y 会有异常问题
Can I set the above configuration? (type 'yes' to accept): yes
8.测试集群
redis-cli -h 111.47.185.188 -c -p 8000
9.如何出现问题 : Redis集群添加数据报错(error) CLUSTERDOWN The cluster is down
这是因为原集群的结点含有原集群的配置,如果使用这些结点搭建新的集群,需要将原来的配置删除。
删除dump.rdb和nodes.conf两个文件 和 pid 和一些配置文件(明显和7000.conf一样的)
结果重新构建集群还是报上面的错误,于是我将几个Redis数据库结点清空。
连接数据库,执行命令: flushdb
# 集群代码 redis-py-cluster
from rediscluster import RedisCluster
if __name__ == '__main__':
s = [{"host": "111.47.185.188", "port": "8000"}, {"host": "111.47.185.188", "port": "8001"}]
try:
rs = RedisCluster(startup_nodes=s)
print(rs.set('ages', '19'))
except Exception as e:
print(e)
发表评论