Redis缓存数据库-快速入门目录
Redis数据库快速入门
一、Redis数据库
介绍:
Redis:非关系型缓存数据库
-
nosql:非关系型数据库
- 没有表,没有表与表之间的关系,更不存在外键
- 存储数据的形式为key:values的形式
- c语言写的服务(监听端口),用来存储数据的,数据是存储在内存中,取值,放值速度非常快, 10w qps
-
缓存数据库:
- 数据存储在内存中
- 大部分时间用于缓存,也可以长久存储数据
-
redis速度为什么这么快:
- 纯内存操作
- 网路模型使用的IO多路复用(可以处理的请求更多)
- 6.x版本之前,单进程,单线程,不存在进程线程之间切换,更少消耗资源
1、redis的安装与运行
版本选择:
- mac:源码编译安装
- linux:源码编译安装
- windows:
- redis没有windows的版本,只有微软基于源码改动,编译的安装包(用法一样)
- 3.x版本 Releases · microsoftarchive/redis · GitHub
- 最新5.x版本 Releases · tporadowski/redis · GitHub
安装:
redis需要了解的目录结构:
- redis-server :服务端启动文件
- redis-cli:客服端启动文件
- redis.windows-service.conf:默认使用的配置文件
- bind 127.0.0.1 :服务端跑在的地址
- port 6379 :占用的端口号
启动redis:
- 方式一:将服务端添加至系统服务(电脑运行自动启动)
* - 方式二:cmd终端使用命令启动
- redis-server 指定配置文件 # 如果不指定,会默认
客服端链接redis:
-
cmd终端使用命令
-
方式一:redis-cli 默认链接本地的6379端口
-
方式二:redis-cli -h 地址 -p 端口
-
2、RESP图形化操作文件
可以使用软件:
<span style="color:#000000"><span style="color:#393a34"><span style="background-color:white"><code class="language-python">Redis Desktop Manager :开源的,原来免费,后来收费了 推荐用(mac<span style="color:#393a34">,</span>win<span style="color:#393a34">,</span>linux 都有)
<span style="color:#393a34">-</span>Qt5 qt是个平台,专门用来做图形化界面的
<span style="color:#393a34">-</span>可以使用c<span style="color:#393a34">+</span><span style="color:#393a34">+</span>写
<span style="color:#393a34">-</span>可以使用python写 pyqt5 使用python写图形化界面 <span style="color:#393a34">(</span>少量公司再用<span style="color:#393a34">)</span>
<span style="color:#393a34">-</span>resp<span style="color:#393a34">-</span><span style="color:#36acaa">2022.1</span><span style="color:#36acaa">.0</span><span style="color:#36acaa">.0</span><span style="color:#393a34">.</span>exe 一路下一步,安装完启动起来
<span style="color:#393a34">-</span>Redis Client 小众
</code></span></span></span>
RESP操作redis:
二、pycharm操作redis
安装模块:
使用pycharm操作redis,pycharm相当于客户端,输入redis命令即可对数据库进行操作
<span style="color:#000000"><span style="color:#393a34"><span style="background-color:white"><code class="language-python"><span style="color:#008000"><em># 下载模块:</em></span>
pip install redis
<span style="color:#008000"><em># 补充:django 中操作mysql,没有连接池的,一个请求就是一个mysql连接</em></span>
<span style="color:#393a34">-</span>可能会有问题,并发数过高,导致mysql连接数过高,影响mysql性能
<span style="color:#393a34">-</span>使用django连接池:https<span style="color:#393a34">:</span><span style="color:#393a34">//</span>blog<span style="color:#393a34">.</span>51cto<span style="color:#393a34">.</span>com<span style="color:#393a34">/</span>liangdongchang<span style="color:#393a34">/</span><span style="color:#36acaa">5140039</span>
</code></span></span></span>
1、Redis普通连接和连接池
普通链接:
普通链接是指,直接操作redis,每一次操作都会建立一条链接
<span style="color:#000000"><span style="color:#393a34"><span style="background-color:white"><code class="language-python"><span style="color:#008000"><em># 导入模块</em></span>
<span style="color:#0000ff">from</span> redis <span style="color:#0000ff">import</span> Redis
<span style="color:#008000"><em># 实例化对象(后方参数填写链接的地址和端口,还可以填写其他参数)</em></span>
conn <span style="color:#393a34">=</span> Redis<span style="color:#393a34">(</span>host<span style="color:#393a34">=</span><span style="color:#a31515">'127.0.0.1'</span><span style="color:#393a34">,</span> port<span style="color:#393a34">=</span><span style="color:#36acaa">6379</span><span style="color:#393a34">)</span>
<span style="color:#008000"><em># 向redis中存放一个数据</em></span>
conn<span style="color:#393a34">.</span>set<span style="color:#393a34">(</span><span style="color:#a31515">'name'</span><span style="color:#393a34">,</span> <span style="color:#a31515">'kangkang'</span><span style="color:#393a34">)</span>
<span style="color:#008000"><em># 从redis中取出存放的数据(二进制格式)</em></span>
<span style="color:#0000ff">print</span><span style="color:#393a34">(</span>conn<span style="color:#393a34">.</span>get<span style="color:#393a34">(</span><span style="color:#a31515">'name'</span><span style="color:#393a34">)</span><span style="color:#393a34">)</span>
<span style="color:#008000"><em># 操作完成,手动关闭,不然会一直占用一条链接</em></span>
conn<span style="color:#393a34">.</span>close<span style="color:#393a34">(</span><span style="color:#393a34">)</span>
</code></span></span></span>
连接池连接:
拿到一个Redis实例的连接池,避免每次建立、释放连接的开销,节省了每次连接用的时间,文中设置了最大10个。
POOL.py
<span style="color:#000000"><span style="color:#393a34"><span style="background-color:white"><code class="language-python"><span style="color:#008000"><em># 1、使用单例模式(保证每次使用的都是同一个实例对象),设置连接池最大为10个</em></span>
<span style="color:#0000ff">import</span> redis
POOL <span style="color:#393a34">=</span> redis<span style="color:#393a34">.</span>ConnectionPool<span style="color:#393a34">(</span>
<span style="color:#008000"><em># 最大链接</em></span>
max_connections<span style="color:#393a34">=</span><span style="color:#36acaa">10</span><span style="color:#393a34">,</span>
<span style="color:#008000"><em># 指定服务端地址</em></span>
host<span style="color:#393a34">=</span><span style="color:#a31515">'127.0.0.1'</span><span style="color:#393a34">,</span>
prot<span style="color:#393a34">=</span><span style="color:#36acaa">6379</span>
<span style="color:#393a34">)</span>
</code></span></span></span>
my_redis.py
<span style="color:#000000"><span style="color:#393a34"><span style="background-color:white"><code class="language-python"><span style="color:#008000"><em># 导入redis</em></span>
<span style="color:#0000ff">from</span> redis <span s