python操作redis(单机、集群、哨兵)

安装
单机和哨兵,使用的是redis模块,所以下载redis即可,使用pip或者pip3命令来安装。

pip3 install redis

集群需要用到rediscluster模块,采用以下命令安装redis-py-cluster即可,最好指定版本

pip3 install redis-py-cluster=1.3.6

redis单机连接

import redis


conn = redis.StrictRedis(connection_pool=redis.ConnectionPool(
			host="192.168.233.1", port="6379", password=""
		))

# string类型的写入读取
conn.set("key_name", "value")
conn.get("key_name")

# 列表类型的读取写入
conn.lpush("key_name", "value1", "value2",...)
conn.lrange("key_name", 0, -1) # 列出key_name下的所有值

以下是函数形式:

import redis


def get_single_connection(host, port, password):
	conn = redis.StrictRedis(connection_pool=redis.ConnectionPool(
				host=host, port=port, password=password
			))
	return conn

redis哨兵连接

from redis.sentinel import Sentinel


sentinel_list = [
			("192.168.233.1", "26379"),
			("192.168.233.2", "26379"),
			("192.168.233.3", "26379")
		]
mySentinel = Sentinel(sentinel_list)
master = mySentinel.master_for("mymaster", db=0)
slave = mySentinel.slave_for("mymaster", db=0)


# 使用master进行写的操作,使用slave进行读的操作
master.hset("key_name", "filed", "value")
slave.hget("key_name", "filed")
slave.hgetall("key_name")

以下是函数形式:

from redis.sentinel import Sentinel


class RedisSentinel:
    def __init__(self, sentinel_list, name="mymaster", password="", db=0):
        self.sentinel = Sentinel(sentinel_list, socket_timeout=60)
        self.name = name
        self.password = password
        self.db = db
        
    def get_master_and_slave_conn(self):
        master = self.sentinel.master_for(
            service_name=self.name,
            socket_timeout=60,
            password=self.password,
            db=self.db)
        slave = self.sentinel.slave_for(
            service_name=self.name,
            socket_timeout=60,
            password=self.password,
            db=self.db
        )
        return master, slave

redis集群连接

from rediscluster import StrictRedisCluster



cluster_nodes = [{"host": "192.168.233.1", "port": "9001"},
                 {"host": "192.168.233.1", "port": "9002"},
                 {"host": "192.168.233.1", "port": "9003"},
                 {"host": "192.168.233.2", "port": "9004"},
                 {"host": "192.168.233.2", "port": "9005"},
                 {"host": "192.168.233.2", "port": "9006"}]
password = "root"
conn = StrictRedisCluster(
			startup_nodes=cluster_nodes,
			decode_response=True,
			password=password,
			max_connection=300
		)

# 写入值,获取值
conn.set("key_name", "value")
conn.get("key_name")

以下是函数形式:

from rediscluster import StrictRedisCluster


def get_cluster_conn(cluster_nodes, password)
	conn= StrictRedisCluster(
				startup_nodes=cluster_nodes,
				decode_response=True,
				password=password,
				max_connection=300
			)
	return conn

redis的操作
redis有五种数据类型:string, set, list, hash, sorted set
常用的操作有:增加,查询,删除

以下是python中,使用redis连接后的操作,其中conn即为上边的单机、集群、哨兵的连接:

string字符串

# 增加\查询\删除
conn.set(key, value)
conn.get(key)
conn.delete(key)

set集合

# 增加\查询\删除
conn.sadd(key, value1, value2...)
conn.smembers(key)
conn.delete(key)

list列表

# 增加\查询\删除
conn.lpush(key, value1, value2,...)
conn.lrange(key, start, end)  # 比如列出所有conn.lrange("key_name", 0, -1)
conn.delete(key)

hash哈希

# 增加\查询\删除
conn.hset(key, field, value)
conn.hget(key, filed)
conn.hgetall(key)
conn.delete(key)

sorted set有序集合

# 增加\查询\删除
# 注意:有序集合键值对是与redis中操作相反的,redis中:zadd key score value
# python中,分值对应的是字典中的值
conn.zadd(key, {value1: score1, value2: score2}) 
conn.zrange(key, start, end)
conn.delete(key)
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Redis可以以不同的模式运行,包括单机模式、主从模式、哨兵模式和集群模式。在单机模式下,Redis只有一个实例,所有的数据都存储在这个实例中。主从模式中,有一个主节点和多个从节点,主节点负责写入数据,从节点负责复制主节点的数据。哨兵模式是在主从模式的基础上引入了哨兵节点,哨兵节点负责监控整个Redis集群的状态,并在主节点出现故障时自动将一个从节点升级为新的主节点。集群模式是在主从模式的基础上引入了分片,将数据分散存储在多个节点上,提高了存储和访问的能力。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [redis单机、主从、哨兵集群模式](https://blog.csdn.net/weixin_43989347/article/details/125293740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [一文读懂Redis的四种模式,单机、主从、哨兵集群(*)](https://blog.csdn.net/weixin_42408447/article/details/120995478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值