目录
一、 redis介绍和安装
# redis:是一个key-value存储系统,非关系型数据库(nosql数据库),数据存在于内存中,缓存数据库
# redis支持5大数据类型:字符串,列表,hash(字典),集合,有序集合
# 使用Redis有哪些好处
-速度快:缓存数据库
-支持丰富数据类型:5大数据类型
-支持事务:通过管道支持(单实例上有效)
-丰富的特性:可用于缓存,消息队列,按key设置过期时间,过期后将会自动删除
# redis相比memcached有哪些优势
-都是内存数据库
-redis类型丰富,5大类型,memcached只支持字符串类型
-redis支持持久化,memcached不支持持久化
-redis速度比mencached快
# 特点
可以持久化
单线程,单进程
-redis最新版本是6.x
-6.x之前是单线程,单进程
# redis单线程为什么这么快?并发量:10w,6w左右
-1 纯内存操作
-2 使用了io多路复用模型(epoll select)
-3 因为是单线程,不存在线程间切换,节省资源
# 服务:客户端,服务端(跟mysql一样, 是存数据的地方)
# 安装:
-redis使用c语言写的,开源,,我们不支持windows,第三方,基于redis源码,自行修改,编译成windows平台可以运行的(win平台:维护到 3.x版本),咱们现在讲,以3.x为例
# 官网
http://redis.cn/
-官网提供了c源码,需要自行下载,编译
-win平台,自己找一个安装包(不是官方提供的)https://github.com/microsoftarchive/redis
-Redis-x64-3.2.100.msi:一路下一步
-图形化界面的客户端:redis-desktop-manager:一开始免费,后来收费了:一路下一步
-监听端口默认是:6379
# linux下安装
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
tar xzf redis-3.0.6.tar.gz
cd redis-3.0.6
make
# Windows下安装
https://www.cnblogs.com/liuqingzheng/p/9831331.html
# 启动redis服务
-第一种:在任意路径下敲:redis-server # 等同于mysqld
-第二种:win平台,已经做成了服务,把服务启动即可
-"D:\Program Files\Redis\redis-server.exe" --service-run "D:\Program Files\Redis\redis.windows-service.conf"
# 客户端连接
-第一种方式:在任意路径下敲:redis-cli -h 127.0.0.1 -p 6379 # 等同于 mysql -h -P
-如果连本地的6379端口,直接敲redis-cli
-第二种方式:使用客户端连接
-第三种方式:使用python操作:pip3 install redis
二、 普通连接和连接池
## 普通连接
# 实例化对象,创建连接对象
conn=redis.Redis(host='127.0.0.1',port=6379)
# conn=Redis()
# 操作redis
conn.set('name','lqz')
conn.close()
##redis连接池
import redis
#拿到一个连接数为3的连接池
# 把POOL做成单例:把它以模块导入方式
POOL=redis.ConnectionPool(max_connections=3,host='127.0.0.1', port=6379)
# 从连接池中拿出一个连接,给conn
conn=redis.Redis(connection_pool=POOL)
conn.set('age',19)
conn.close() # 不是关闭连接,是把该连接,放回到连接池
####把POOL以单例形式使用
import redis
from pool import POOL # 以模块形式导入,是天然单例
conn=redis.Redis(connection_pool=POOL)
# conn2=redis.Redis(connection_pool=POOL)
# conn3=redis.Redis(connection_pool=POOL)
# conn4=redis.Redis(connection_pool=POOL)
# conn5=redis.Redis(connection_pool=POOL)
# conn6=redis.Redis(connection_pool=POOL)
conn.set('age',19)
conn.close() # 不是关闭连接,把该连接,放回到连接池
# pool.py
import redis
#拿到一个连接数为3的连接池
# 把POOL做成单例:把它以模块导入方式
POOL=redis.ConnectionPool(max_connections=3,host='127.0.0.1', port=6379)
三、 redis 5大数据类型之字符串
String操作,redis中的String在在内存中按照一个name对应一个value来存储。如图:
from redis import Redis
conn = Redis(host='127.0.0.1',port=6379