1 redis介绍
# 介绍 c s 架构的软件 redis:非关系型数据库【存数据的地方】nosql数据库,内存存储,速度非常快,可以持久化【数据从内存同步到硬盘】,数据类型丰富【5大数据类型:字符串,列表,哈希(字典),集合,有序集合】,key-value形式存储【根本没有表的结构,相当于咱们的字典】 -nosql:指非关系型数据库:1 不限于SQL 2 没有sql # redis 为什么这么快 -1 高性能的网络模型:IO多路复用的epoll模型,承载住非常高的并发量 -2 纯内存操作,避免了很多io -3 单线程架构,避免了线程间切换的消耗 -6.x之前:单线程,单进程 -6.x以后,多线程架构,数据操作还是使用单线程,别的线程做数据持久化,其他操作 # redis 应用场景(了解) 1 当缓存数据库使用,接口缓存,提高接口响应速度 -请求进到视图---》去数据查询[多表查询,去硬盘取数据:速度慢]----》转成json格式字符串---》返回给前端 -请求进到视图---》去redis[内存]----》取json格式字符串---》返回给前端 2 做计数器:单线程,不存在并发安全问题 -统计网站访问量 -个人站点浏览量 -文章阅读量 3 去重操作:集合 4 排行榜:有序集合 -阅读排行榜 -游戏金币排行榜 5 布隆过滤器 6 抽奖 7 消息队列
1.1 redis安装
# 开源软件:使用c语言写的---【编译型语言,在操作系统运行,要编译成可执行文件,由于采用了IO多路复用的epoll模型,所以它不支持windows,只有linux操作系统支持epoll】 # 微软官方:改了,编译成可执行的安装包,下载一路下一步安装 -版本没有最新 # 官网:https://redis.io/ -下载完是源代码:c语言源码 :https://redis.io/download/#redis-stack-downloads -最稳定:6.x -最新7.x # 中文网:http://redis.cn/download.html -上面最新只到5.x # win版本下载地址 # 最新5.x版本 https://github.com/tporadowski/redis/releases/ # 最新3.x版本 https://github.com/microsoftarchive/redis/releases 下载完一路下一步即可,具体可参照:https://www.cnblogs.com/liuqingzheng/p/9831331.html # win装完会有redis服务 -启动服务,手动停止 -客户端链接:redis-cli -h 127.0.0.1 -p 6379 -简单命令: set name lqz get name ping -停掉服务: -去win服务点关闭 -客户端关闭:shutdown #mysql 服务端 #mysql客户端 -navicate -命令窗口cmd -python操作 # redis 服务器端 # redis 客户端 -redis-cli -图形化工具:redis-destop-management -python操作
2 python操作redis
# pip3 install redis from redis import Redis conn=Redis( host="localhost",port=6379) # conn.set('name','xxx') print(conn.get('name')) conn.close()
3 redis连接池
POOL.py import redis pool = redis.ConnectionPool(max_connections=200, host='127.0.0.1', port=6379)
from redis import Redis from threading import Thread # 直接链接 # def get_name_from_redis(): # conn = Redis(host="localhost", port=6379) # print(conn.get('name')) # conn.close() # # # for i in range(100): # t=Thread(target=get_name_from_redis) # t.start() # # # import time # time.sleep(10) ### 使用连接池链接 import redis from POOL import pool def get_name_from_redis(): # 创建一个连接池,保证它是单例,全局只有一个pool对象:使用模块导入方式实现单例 conn = redis.Redis(connection_pool=pool) #m每执行一次会从池中取一个链接,如果没有,等待 res=conn.get('name') print(res) conn.close() for i in range(100): t=Thread(target=get_name_from_redis) t.start()
标签:name,get,redis,conn,import,pool From: https://www.cnblogs.com/shangxin-bai/p/16889730.html