python(python语言)诶诶哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟再说一遍
安装redis的python库
年欧洲足球锦标赛
点安装重定向器
普通的redis链接操作
年欧洲足球锦标赛
汇入redis #你是什么意思再说一遍昂儒昂
r=重复Redis(主机='localhost ',端口=6379,密码='pwd@321 ',db=1,decode _ answers=true)# host切再说一遍云娥,密码阿云,重复黄四郎呀页:1你是谁,decode _ answers=true阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云,阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜阿胜,唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟密码(p)你好你好
r.set('名称,' phyger-from-python-redis') #键切"名称"值切'从大蟒到redis '的来自python的phyger-redis(从大蟒到大蟒再到大蟒再到python——再到python——再到python——再到python——再到python——再到python——再到python——再到python——再到python)云娥再说一遍云娥
print(r['name']) #-什么:哎哎哎哎名称你是谁
列印(r . get(' name ')#魏冄:哎哎哎哎名称你是谁
列印(类型(r.get('名称))
使用redis连接池
年欧洲足球锦标赛
汇入redis #你是什么意思再说一遍昂儒昂
def client_redis_pool():
pool=redis .ConnectionPool(主机='localhost ',端口=6379,db=1,decode _ responses=true,max_connections=10)
r=重复。连线集区=集区
r.set('name ',' phyger-from-python-redis ')"
列印(r.get('name ')指令
打印(r['name'])
列印(类型(r.get('名称))
存储数据时自定义过期时间
年欧洲足球锦标赛
汇入redis #你是什么意思再说一遍昂儒昂
#年#月#日什么:设置(名称、值、ex=无、px=无、nx=假、xx=假)
#要求贺盛文曰(米)
# pxint贺盛文曰(毫秒)
# nxbool你好,唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟名称什么事,你好集合(设置)
# xxbool你好,唉哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟名称三、结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结,你好集合(设置)
def client_redis_pool_ex():
pool=redis .ConnectionPool(主机='localhost ',端口=6379,db=1,decode _ responses=true)
r=重复。连线集区=集区
r.set('name ',' phyger-from-python-redis ',ex=3)
打印(r['name'])
睡眠时间(3)
列印(r.get('name ')指令
列印(类型(r.get('名称))
多线程连接池测试
年欧洲足球锦标赛
汇入执行绪
汇入redis
def redis_pool_test():
#年#月#日吕惠卿(签名)(不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,魏冄逾时哈哈哈,范思哲范思哲。)
# pool=redis .blockgcconnectionpool(主机=' localhost ',端口=6379,db=1,max_connections=2,超时=5)
#年#月#日范思哲,范思哲
pool=redis .ConnectionPool(主机='localhost ',端口=6379,db=1,max_connections=2,超时=5)
redis_client=redis .连线集区=集区
线程1=redxexthread(redis _ client)
线程2=redxexthread(redis _ client)
线程3=redxexthread(redis _ client)
线程4=redxexthread(redis _ client)
线程5=redxexthread(redis _ client)
线程6=redxexthread(redis _ client)
线程7=redxexthread(redis _ client
)
thread8 = RedaisExexThread(redis_client)
thread9 = RedaisExexThread(redis_client)
thread10 = RedaisExexThread(redis_client)
thread1.start()
thread2.start()
thread3.start()
thread4.start()
thread5.start()
thread6.start()
thread7.start()
thread8.start()
thread9.start()
thread10.start()
# 使用普通连接池的时候,连接数不够会直接报错
# 使用阻塞连接池的时候,如果连接数不够,会等待,等待时间在设定的超时时间之后,才会舍弃,
# 在实际应用的时候,可以把线程池和超时时间设置的稍微大一些
redis 单例模式作为全局配置连接使用
创建redisPool.py文件
# !/usr/bin/env python3
# -*- coding: utf-8 -*-
import redis
RedisConfig = dict(host='127.0.0.1', port=6379, db=1, decode_responses=True, max_connections=10, timeout=5)
class RedisCache:
_instance = None
def __new__(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = object.__new__(cls)
return cls._instance
_redis_pool_data = redis.BlockingConnectionPool(**RedisConfig)
# 以管道方式运行redis
@classmethod
def get_pipe(cls):
conn = cls.get_conn()
return conn.pipeline(transaction=True)
# 实例化redis
@classmethod
def get_conn(cls):
conn = redis.StrictRedis(connection_pool=cls._redis_pool_data)
return conn
创建调用主文件
import redisPool
import threading
def redis_clientt():
redis_client = redisPool.RedisCache.get_conn()
thread1 = RedaisExexThread(redis_client)
thread2 = RedaisExexThread(redis_client)
thread3 = RedaisExexThread(redis_client)
thread4 = RedaisExexThread(redis_client)
thread5 = RedaisExexThread(redis_client)
thread6 = RedaisExexThread(redis_client)
thread7 = RedaisExexThread(redis_client)
thread8 = RedaisExexThread(redis_client)
thread9 = RedaisExexThread(redis_client)
thread10 = RedaisExexThread(redis_client)
thread1.start()
thread2.start()
thread3.start()
thread4.start()
thread5.start()
thread6.start()
thread7.start()
thread8.start()
thread9.start()
thread10.start()
redis pip 管道批量提交和普通set参数的区别
def redis_client_set_pip(ss):
redis_clientt = redisPool.RedisCache.get_pipe()
for i in range(1, 100000):
redis_clientt.sadd(ss + str(i), i)
redis_clientt.execute()
print(time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime()))
# 添加10000个key-value 使用管道和不使用管道的区别
def redis_client_set(ss):
redis_clientt = redisPool.RedisCache.get_conn()
for i in range(1, 100000):
redis_clientt.set(ss + str(i), i)
# redis_clientt.execute()
print(time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime()))
# 添加10000个key-value 使用管道和不使用管道的区别
if __name__ == '__main__':
print(time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime()))
t1 = threading.Thread(target=redis_client_set_pip, args=['no_pipe1:'])
t2 = threading.Thread(target=redis_client_set_pip, args=['no_pipe2:'])
t3 = threading.Thread(target=redis_client_set_pip, args=['no_pipe3:'])
t1.start()
t2.start()
t3.start()
print(time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime()))
同样是创建相同的数据pip方式比普通一个一个set的方式要提高好多倍
惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
一代天骄,成吉思汗,只识弯弓射大雕。
俱往矣,数风流人物,还看今朝
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/130333.html