redis搭建主从、redis搭建集群、redis中StrictRedis()、RedisCluster()方法与python交互
创始人
2024-02-01 05:42:09

一、StrictRedis方法

创建对象,指定host、port、db与指定的服务器端口连接,其中默认host为localhost、port为6379、db为0,不同类型调用的实例方法不同,与redis命令一致,方法需要的参数与命令参数一致

from redis import StrictRedis
sr =StrictRedis(host='localhost', port=6379, db=0)
# 简写:sr = StrictRedis()

二、pycharm使用StrictRedis方法对string类型的数据进行增删改查

方法说明

  • set(key,value):存在则修改,不存在则新增,若成功返回True,否则返回false
  • get(key):获取,若存在返回key所对应的value,否则返回None
  • delete(key):删除key及所对应值,若成功返回受影响的键名,否则返回0
  • keys():获取所有键,支持正则表达式
from redis import StrictRedis
if __name__ == '__main__':try:   # 连接获取外部资源要使用trysr = StrictRedis()  # 创建对象,与redis服务器建立连接add = sr.set('name', 'YY')   # 增加name键,值为YY,若添加成功返回true,否则返回falseprint('是否增加成功:', add)  # 输出结果get = sr.get('name')  # 获取键为name的值,若存在返回值,否则返回Noneprint('name的值为:', get)modify = sr.set('name', 'YX')   # 修改name键的值为YXprint('修改后name的值为:', sr.get('name'))print('获取到的键为:', sr.keys())  # 获取所有键,aa为之前命令行添加的delete = sr.delete('name')delete2 = sr.delete('nam')print('删除成功返回%d,删除失败返回%d' % (delete, delete2))except Exception as e:print(e)输出:
若redis服务未启动,将输出如下错误
Error 10061 connecting to localhost:6379. 由于目标计算机积极拒绝,无法连接。启动后输出:
是否增加成功: True
name的值为: b'YY'
修改后name的值为: b'YX'
获取到的键为: [b'aa', b'name']
删除成功返回1,删除失败返回0

三、搭建主从

主从理解 

  • 一个master主可以拥有多个slave从,一个slave又可有多个slave,由此形成多级服务器集群架构
  • master主用来写数据
  • slave从用来读数据
  • 通过主从配置可以实现读写分离,网站读写比例为10:1

3.1主配置

1.使用ifconfig命令查看ip

2.切换至/etc/redis目录下,执行命令sudo vi redis.conf进入文件

3.修改bind绑定的ip

4.按esc退出编辑,进入命令行模式,执行命令:wq保存并退出

3.2 配置从

1.复制redis.conf命名为slave.conf

3.执行命令sudo redis-server slave.conf启动redis服务

2.打开slave.conf并修改slave.conf中的以下内容

1.修改端口:port 6378
2.找到指定位置新增:slaveof 192.168.76.128 6379

4.查看主从关系

执行命令:redis-cli -h 192.168.76.128 info replication

3.3 数据操作

1.执行命令进入master主客户端

redis-cli -h 192.168.76.128 -p 6379

2.执行命令进入slave从客户端 

redis-cli -h 192.168.76.128 -p 6378

四、搭建集群

主从可以一主多从,但若同时访问量过大则不再适用,如大型企业在全国会有很多服务器(华东、华南、华中……)

集群:是一组相互独立的、通过高速网络互联的计算机,其构成了一个组,并以单一系统模式加以管理,一个客户与集群相互作用时,集群像是一个独立的服务器,集群配置是用于提高可用性和可缩放性,当请求到来时先由负载均衡服务器处理,将请求转发到另外一台服务器上

分类

  • 软件层面:只有一台电脑,在该电脑上启动了多个redis服务
  • 硬件层面:有多台实体电脑,每台电脑上都启动了一个redis或多个redis服务

4.1 创建conf文件

在Desktop目录下创建cluster文件夹,并创建7000.conf文件

4.2 在conf文件中添加内容

在7000.conf文件中编辑并添加如下内容

# 端口号
port 7000   
# 访问的ip
bind 192.168.76.128  
# 是否以守护进程(后台)方式运行
daemonize yes   
# pid文件
pidfile 7000.pid   
# 是否使用集群
cluster-enabled yes   
# 集群文件
cluster-config-file 7000_node.conf   # 集群的超时时间
cluster-node-timeout 15000  
# 备份相关
appendonly yes

4.3 复制 conf文件

 复制文件7000.conf并分别命名为7001.conf、7002.conf、7003.conf、7004.conf和7005.conf

4.3 修改conf文件 

进入各个复制的文件,分别修改所选值

如7001.conf文件修改如下 

4.4 使用conf配置文件启动redis服务 

切换至cluster目录,运行redis-server加载这6个配置文件

查看进程

4.5 创建集群

若redis为5.0以上版本,可直接跳过该步骤,改用redis-cli创建集群

切换至redis安装目录下的src目录下,执行以下指令将redis-trib.rb拷贝到/usr/local/bin/目录下,redis-trib.r用于创建集群,复制后可在任何目录下调用次命令

sudo cp redis-trib.rb /usr/local/bin/

运行命令创建集群

redis-trib.rb create --replicas 1 192.168.76.128:7000 192.168.76.128:7001 192.168.76.128:7002 192.168.76.128:7003 192.168.76.128:7004 192.168.76.128:7005

可能运行失败,报警告warning:redis-trib.rb is not longer available,直接按提示即可

4.6 改用以下命令创建集群

redis-cli --cluster create 192.168.76.128:7000 192.168.76.128:7001 192.168.76.128:7002 192.168.76.128:7003 192.168.76.128:7004 192.168.76.128:7005 --cluster-replicas 1 

如下,创建的一主一从,三个节点

 至此集群搭建成功

4.6 数据验证

从上图看看出,搭建的master主服务器为7000、7001、7002,slave从服务器为7003、7004、7005

连接7000,-c表示连接到集群

连接命令:redis-cli -h 192.168.76.128 -p 7000 -c

 写入数据,自动跳到了7001,写入成功

说明

  • redis cluster的设计具有去中心化和去中间件的特性,即集群中的每个节点都是平等的关系每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,且连接保持活跃,由此保证了我们只需要连接集群中的任意⼀个节点,就可以获取到其他节点的数据
  • Redis集群没有用传统的⼀致性哈希来分配数据,而是采用⼀种叫做哈希槽 (hash slot)的方式。redis cluster默认分配了16384个slot,当我们 set⼀个key时,会用CRC16算法来取模得到所属的slot,然后将这个key 分到哈希槽区间的节点上,具体算法为:CRC16(key) % 16384。所以我们在测试set和get的时候,直接跳转到了7000端口的节点
  • Redis集群会把数据存在⼀个master节点,然后在这个master和其对应的salve之间进行数据同步。当读取数据时,也根据⼀致性哈希算法到对应的master节点获取数据。只有当⼀个master挂掉之后,才会启动⼀个对应的salve节点,充当master
  • 需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的⼀半时,整个集群就无法提供服务了

五、pycharm使用RedisCluster()方法与集群交互实现增删改查

安装redis-py-cluster命令:pip install redis-py-cluster 

from rediscluster import RedisCluster
if __name__ == '__main__':try:# 构建所有的节点,redis会用CRC16算法将键和值写到某个节点上nodes = [{'host': '192.168.76.128', 'port': '7000'},{'host': '192.168.76.128', 'port': '7001'},{'host': '192.168.76.128', 'port': '7002'}]src = RedisCluster(startup_nodes=nodes, decode_responses=True)  # 构建RedisCluster对象result = src.set('tel', 99999)   # 新增key为tel的值print(result)tel = src.get('tel')   # 获取key为tel的值print(tel)except Exception as e:print(e)输出:
True
99999

程序运行前后命令行查看值 

学习导航:http://xqnav.top/

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...