Redis介绍与连接池
一、Redis介绍
redis属于cs架构的软件 redis非关系型数据库(NoSQL数据库)内存存储 速度非常快 可以持久化把数据从内存同步到硬盘
数据类型丰富:(5大数据类型:字符串|列表|哈希(字典)|集合|有序集合|) key-value形式存储 没有表结构相当于字典
二、Redis为什么这么快?
-
高性能的网络模型:IO多路复用的epoll模型,承载住非常高的并发量
-
纯内存操作,避免了很多io
-
单线程架构,避免了线程间切换的消耗
- 6.x之前:单线程,单进程
- 6.x以后,多线程架构,数据操作还是使用单线程,别的线程做数据持久化,其他操作
三、Redis应用场景
- 当缓存数据库使用,接口缓存,提高接口响应速度
- 做计数器:单线程,不存在并发安全问题
- 去重操作:集合
- 排行榜:有序集合
- 布隆过滤器
- 抽奖
- 消息队列
四、Redis安装
链接:https://www.cnblogs.com/chen-ao666/p/17190070.html
五、Python操作Redis
安装模块
pip install redis
实例示范
# 1.导入模块的Redis类 from redis import Redis # 2.实例化得到对象 conn = Redis(host='127.0.0.1',port=6379) # 3.使用conn,操作redis # 设置值 res=conn.set('name','xxx') print(res) # True # 取值 res1=conn.get('name') print(res1) # b'xxx' 返回数据是bytes格式 # 4.关闭 conn.close()
六、Redis连接池
直接使用
import redis from threading import Thread def task(): POOL =redis.ConnectionPool(max_connections=10,host='127.0.0.1',port=6379) coon = redis.Redis(connection_pool=POOL) print(coon.get('name')) for i in range(10): t = Thread(target=task) # t.start()
使用半连接池
将池子做成一个模块
- 新建一个py文件——pool.py
# pool.py import redis # 创建一个大小为10的redis连接池 POOL = redis.ConnectionPool(max_connections=10,host='127.0.0.1',port=6379)
- 测试文件中导入
import redis from threading import Thread from pool import POOL def task(): # 创建一个连接池,保证它是单例,全局只有一个pool对象:使用模块导入方式实现单例 conn = redis.Redis(connection_pool=POOL) # 每执行一次会从池中取一个链接,如果没有,等待 print(conn.get('name')) for i in range(10): t = Thread(target=task) t.start()