Redis介绍与连接池

一、Redis介绍

redis属于cs架构的软件 redis非关系型数据库(NoSQL数据库)内存存储 速度非常快 可以持久化把数据从内存同步到硬盘
数据类型丰富:(5大数据类型:字符串|列表|哈希(字典)|集合|有序集合|) key-value形式存储 没有表结构相当于字典

二、Redis为什么这么快?

  1. 高性能的网络模型:IO多路复用的epoll模型,承载住非常高的并发量

  2. 纯内存操作,避免了很多io

  3. 单线程架构,避免了线程间切换的消耗

    • 6.x之前:单线程,单进程
    • 6.x以后,多线程架构,数据操作还是使用单线程,别的线程做数据持久化,其他操作

三、Redis应用场景

  1. 当缓存数据库使用,接口缓存,提高接口响应速度
  2. 做计数器:单线程,不存在并发安全问题
  3. 去重操作:集合
  4. 排行榜:有序集合
  5. 布隆过滤器
  6. 抽奖
  7. 消息队列

四、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()
posted @ 2023-03-09 22:06  莫~慌  阅读(260)  评论(0编辑  收藏  举报