redis介绍和安装、redis普通连接和连接池、字符串类型、hash类型、列表类型列表类型
文章目录
- redis介绍和安装
- 安装
- 步骤
- 启动,连接
- redis普通连接和连接池
- 普通连接
- 连接池
- redis字符串类型
- redis hash类型
- redis列表类型
redis介绍和安装
- redis 什么?
- 数据库就是个存数据的地方:只是不同数据库数据组织,存放形式不一样
- 关系型数据库:mysql、oracle、sqlserver、postgrasql
- 非关系型数据(no sql):redis,mongodb,clickhouse,infludb,elasticsearch,hadoop
- 没有sql:没有sql语句
- not olny sql 不仅仅是sql
- redis:一款纯内存存储的非关系型数据库(数据都在内存),速度非常快
- redis特点:
https://www.cnblogs.com/liuqingzheng/articles/9833534.html- redis是一个key-value存储系统
- 数据类型丰富,支持5大数据类型:字符串,列表,hash(字典),集合,有序集合
- 纯内存操作
- 可以持久化:能都把内存数据,保存到硬盘上永久存储
- redis为什么这快?
- 纯内存,减少io
- 使用了 io多路复用的 epoll 网络模型
- 数据操作是单线程,避免了线程间切换
- 多个客户端同时操作,不会存在并发安全问题
安装
- 最新是7,公司里5、6比较多
- 开源软件,免费的,他们不支持win
- epoll模型不支持win
- 微软官方:基于源码修改 ⇢ \dashrightarrow ⇢ 编译成可执行文件
- 第三方:
https://github.com/tporadowski/redis/releases/
步骤
- win:下载安装包,一路下一步
- 安装目录在环境变量中:任意路径敲 redis-server reidis-cli 都能找到
- redis做成了服务,以后通过服务启动即可
- mac:官网下载,解压即可
- win,mac:两个可执行文件:
- redis-server :等同于 mysqld
- reidis-cli :等同于mysql
启动,连接
-
启动方式
- 使用服务启动
- 使用命令启动:
redis-server
-
连接
1.本地:redis-cli
2.远端:redis-cli -h 地址 -p 端口(默认端口6379) -
图形化客户端
- resp: https://github.com/lework/RedisDesktopManager-Windows/releases
- Navicate
连接上发现有16个库
-
放值
使用图形化客户端放入值 -
取值
cmd中连接Redis后:get key
redis普通连接和连接池
-
python 代码作为客户端—》连接
-
安装模块:
pip install redis
普通连接
from redis import Rediscoon = Redis(host='localhost', port=6379, db=0, decode_responses=True)res= coon.get('name')print(res)coon.close()
连接池
import redis
POOL = redis.ConnectionPool(host='localhost', port=6379, max_connections=50)from threading import Threaddef task():coon = redis.Redis(connection_pool=POOL)print(coon.get('name'))coon.close()if __name__ == '__main__':for i in range(5):t = Thread(target=task)t.start()
redis字符串类型
conn为实例化得到对象
- 新增或修改:
conn.set(key, value, ex=None, px=None, nx=False, xx=False)- ex:过期时间(秒)
- px:过期时间(毫秒)
- nx:如果设置为True,则只有key不存在时,当前set操作才执行,值存在,就修改不了,执行没效果
- xx:如果设置为True,则只有key存在时,当前set操作才执行,值存在才能修改,值不存在,不会设置新值
- sex中nx为Ture:
conn.setnx(key, value) - sex中ex传值:
conn.setex(name, value, time) - sex中px传值:
conn.psetex(name, time_ms, value) - 批量新增或修改:
conn.mset(*args, **kwargs) - 获取值:
conn.get(key) - 批量获取值:
conn.mget(keys, *args) - 新增或修改值并返回之前的值:
conn.getset(key, value) - 获取start到end的字符:
conn.getrange(key, start, end) - 从offset位置开始修改成value:
conn.setrange(key, offset, value) conn.setbit(key, offset, value)conn.getbit(key, offset)conn.bitcount(key, start=None, end=None)conn.bitop(operation, dest, *keys)- 统计长度:
conn.strlen(key) - 自加整数:
conn.incr(key, amount=1)
key值为数字,amount默认1,执行一遍,值增加amount - 自加浮点型:
conn.incrbyfloat(key, amount=1.0) - 自减整数:
conn.decr(self, key, amount=1) - 自减浮点型:
conn.append(key, value)
redis hash类型
hash 类型,就是咱们python中的字典类型, 数据结构:数据的组织形式 底层存储 数组 ⇢ \dashrightarrow ⇢ 根据key值使用hash函数得到结构,存到数组中
字典的key值必须可hash
字典的key值必须是不可变数据类型
hash 类型无序,跟放的先后顺序无关的
python 的字典是 有序的 字典+列表
- 新增或修改:
conn.hset(name, key, value) - 批量新增或修改:
conn.hmset(name, mapping)conn.hmset('userinfo2',{'name':'pyy',"age":33}) conn.hset('userinfo3',mapping={'name':'xxx',"age":33}) - 获取值:
conn.hget(name,key) - 批量获取值:
conn.hmget(name, keys, *args) - 取出hash中里的所有数据(k:v):
conn.hgetall(name) - 获取hash中数据数量:
conn.hlen(name) - 以列表获取所有key:
conn.hkeys(name) - 以列表获取所有value:
conn.hvals(name) - 验证hash中有无key值,返回布尔值:
conn.hexists(name, key) - 批量删除值:
conn.hdel(name,*keys)conn.hdel('userinfo', 'age', 'hobby') - 将key值自增:
conn.hincrby(name, key, amount=1) - 将key值自增(浮点型):
conn.hincrbyfloat(name, key, amount=1.0) - 从name中cursor位置取出count个值:
conn.hscan(name, cursor=0, match=None, count=None) - 一次性全取出,成迭代器:
conn.hscan_iter(name, match=None, count=None)
redis列表类型
进行操作列表类型的表
- 从列表最左边数据新增:
conn.lpush(name, values) - 从列表最右边数据新增:
conn.rpush(name, values) - 列表name存在时,从左边新增:
conn.lpushx(name, value) - 列表name存在时,从右边新增:
conn.rpushx(name, value) - 获取列表长度:
conn.llen(name) - 以refvalue为参照物添加值:
conn.linsert(name, where, refvalue, value))- 前:
where=before - 后:
where=after
- 前:
- 修改index
conn.lset(name, index, value) - 从左侧删count个value值:
conn.lrem(name, count, value) - 从列表左侧删除并弹出:
conn.lpop(name) - 从列表右侧删除并弹出:
conn.rpop(name) - 取出index位置的值:
conn.lindex(name, index) - 从start位置到end位置取出:
conn.lrange(name, start, end) - 留下从start位置到end位置,其他全部删除:
conn.ltrim(name, start, end) - 从列表src右侧弹出添加到dst左侧:
conn.rpoplpush(src, dst) - 从左侧阻塞式弹出:
conn.blpop(keys, timeout)- 如果列表内没值,timeout(秒)时间到返回None
- 从左侧阻塞式删除弹出:
conn.brpop(keys, timeout), - 阻塞式从列表src右侧弹出添加到dst左侧:
conn.brpoplpush(src, dst, timeout=0)
相关文章:
redis介绍和安装、redis普通连接和连接池、字符串类型、hash类型、列表类型列表类型
文章目录 redis介绍和安装安装步骤启动,连接 redis普通连接和连接池普通连接连接池 redis字符串类型redis hash类型redis列表类型 redis介绍和安装 redis 什么? 数据库就是个存数据的地方:只是不同数据库数据组织,存放形式不一样…...
集成开发环境PyCharm的使用【侯小啾python领航计划系列(三)】
集成开发环境 PyCharm 的使用【侯小啾python领航计划系列(三)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…...
Flink(九)【时间语义与水位线】
前言 2023-12-02-20:05,终于写完啦,最近状态不错。刚写完又收到了她的消息哈哈哈哈,开心。 再去全力打拼一次,奋战一场,就算最后打了败仗也无所谓,至少你留下了足迹。 《解忧杂货店》 1、时间语义 …...
torch中的随机数种子
如何在torch生成随机数时,设置随机种子,要求每次调用生成的随机数都一样 在 PyTorch 中,可以使用 torch.manual_seed(seed) 函数设置随机种子,以确保每次运行代码时生成的随机数都一样。 以下是一个示例代码,展示了如…...
C 标准库 <math.h>
C 标准库 <math.h> C <math.h>头文件声明了一组函数来执行数学运算,例如:sqrt()计算平方根,log()查找数字的自然对数,等等。 math.h 头文件定义了各种数学函数和一个宏。在这个库中所有可用的函数都带有一个 double…...
一篇带你串通数据结构
文章目录 导论数据结构的定义数据结构在计算机科学中的重要性为什么学习数据结构很重要 1、基本概念1.1、数据、数据元素和数据项的概念1.2、数据对象与数据结构的关系1.3、逻辑结构与物理结构 2、线性结构2.1、数组2.2、链表2.3、栈2.4、队列 3、非线性结构3.1、树3.2、图 4、…...
网络篇---第九篇
系列文章目录 文章目录 系列文章目录前言一、说说TCP/IP四层网络模型二、说说域名解析详细过程?三、 IP 地址分为几类,每类都代表什么,私网是哪些?四、说说TCP 如何保证可靠性的?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家…...
Python基础学习快速入门
文章目录 Number变量String字符串Def函数Class类List列表Tuple元组Dictionary字典Set集合值与引用类型if条件控制Loop循环 Number变量 python直接赋值,不需要定义变量类型。不需要**,逗号结尾符 使用print**直接进行输出 #赋值 a 1.0 print(a)a 7 print(a)p…...
C语言-预处理与库
预处理、动态库、静态库 1. 声明与定义分离 一个源文件对应一个头文件 注意: 头文件名以 .h 作为后缀头文件名要与对应的原文件名 一致 例: 源文件:01_code.c #include <stdio.h> int num01 10; int num02 20; void add(int a, in…...
王道数据结构课后代码题p40 9.给定一个带表头结点的单链表,写出算法 : 按递增次序输出单链表中各结点的数据元素并释放结点 (c语言代码实现)
本题代码如下(有注释) void delete_min(linklist* head) {while ((*head)->next ! NULL)//循环到只剩下头节点{lnode* pre *head;//pre为元素最小结点的前驱结点指针lnode* p (*head)->next;//p为工作指针lnode* q;//指向被删除的结点while (p-…...
对系统的 Go 版本进行升级
方法一 直接升级系统的 Go 版本 注意以下操作仅适用于:amd64 架构的 Centos 系统。如果需要适配其他架构,需要自行编写代码实现。 手动执行: # 显示当前版本 go version # 查看环境变量 cat /etc/profile # 进入 go 的安装目录,…...
【从删库到跑路 | MySQL总结篇】事务详细介绍
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、事务…...
七牛云1024创建节-赛后有感
距离比赛结束已经过去快半个月时间,七牛云又发起了有奖征文的活动,正好借此机会记录一下自己参加这次比赛的经历,感受和一些比赛的心得。 如何了解到的比赛信息 其实我很早就开始关注七牛云了,最早是在今年二三月的时候…...
CSS 选择器优先级,!important 也会被覆盖?
目录 1,重要性2,专用性3,源代码顺序 CSS 属性值的计算过程中。其中第2步层叠冲突只是简单说明了下,这篇文章来详细介绍。 层叠冲突更广泛的被称为 CSS选择器优先级计算。 为什么叫层叠冲突,可以理解为 CSS 是 Cascadi…...
关于src别名的配置之tsconfig.json配置
tsconfig.json {"compilerOptions": {"baseUrl": "./", // 解析非相对模块的基地址,默认是当前目录"paths": { //路径映射,相对于baseUrl"/*": ["src/*"] }} } ① "baseUrl": &…...
Mybatis如何执行批量操作
文章目录 Mybatis如何执行批量操作使用foreach标签 使用ExecutorType.BATCH如何获取生成的主键 Mybatis如何执行批量操作 使用foreach标签 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach标签的属性主要有item,index&…...
LeetCode 1094. 拼车:优先队列
【LetMeFly】1094.拼车:优先队列 力扣题目链接:https://leetcode.cn/problems/car-pooling/ 车上最初有 capacity 个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向) 给定整数 capacity 和一个数组…...
项目开发维护技术文档(总结梳理)
目录 一、项目背景 二、架构设计 1.技术栈 2.架构图 3.代码结构 三、模块划分 1.用户模块 2.商品模块 四、开发规范 1.命名规范 2.代码格式 3.版本控制 五、部署流程 1.环境要求 2.部署流程 六、问题解决 1.数据库连接异常 2.Redis缓存失效 七、参考资料 项…...
01_学习使用javax_ws_rs_上传文件
文章目录 1 前言2 Maven 依赖3 上传接口4 如何解析 MultipartFormDataInput5 结语 1 前言 使用 Spring MVC 来处理文件上传,想必是大家耳熟能详的了,如下代码: ResponseBody PostMapping("/upload") public String upload(Request…...
MFC 发布CLXHHandleEngine动态库1.0.0.0版本
第一版发布以下功能,此项目使用VS2013创建,项目配置包括Unicode的Mdd,md与多字节版本: //MFC Grid表格 #include "../MFCGridCtrl/GridCtrl.h" //使用AES与Base64加密解密可以与java中的AES加解密衔接 //AES加密解密 #include &q…...
构建企业级AI客服系统:从知识库集成到无缝转人工的实战指南
1. 企业级AI客服系统架构设计 第一次搭建AI客服系统时,我犯了个典型错误——直接调用大模型API就开始开发前端界面。结果上线后才发现,当用户量超过50人时响应速度直线下降,转人工功能更是形同虚设。这个教训让我明白,企业级系统必…...
探索汽车LAR LQG半主动/主动悬架:基于Simulink的奇妙之旅
汽车lar lqg 半主动/主动悬架 simulink在汽车工程领域,悬架系统犹如车辆的“脚”,直接影响着行驶的平顺性和安全性。今天咱们就来唠唠汽车的LAR LQG半主动/主动悬架,顺便用Simulink来比划比划。 LAR LQG悬架原理简述 LAR(Linear …...
001、性能优化基础:慢SQL诊断与执行计划分析
昨天凌晨又被告警短信吵醒了,线上某核心接口的P99响应时间飙到了3秒。登录服务器一看,MySQL的CPU已经跑满,processlist里堆了二十几个相同的查询——又是慢SQL惹的祸。这种场景咱们做后端开发的太熟悉了,今天就来聊聊怎么系统性地…...
华为2288H V3服务器iBMC配置全攻略:从默认密码到ESXi安装一步到位
华为2288H V3服务器iBMC与ESXi部署实战指南 对于企业IT基础设施团队而言,华为2288H V3服务器的灵活配置与高效管理能力使其成为数据中心建设的理想选择。本文将深入解析从基础配置到虚拟化平台部署的全流程,特别针对iBMC智能管理系统和VMware ESXi安装提…...
如何实现零配置专业级视频播放体验?mpv_PlayKit配置方案深度解析
如何实现零配置专业级视频播放体验?mpv_PlayKit配置方案深度解析 【免费下载链接】mpv_PlayKit 🔄 mpv player 播放器折腾记录 Windows conf | 中文注释配置 汉化文档 快速帮助入门 | mpv-lazy 懒人包 Win11 x64 config | 着色器 shader 滤镜 filter 整合…...
BallonsTranslator:深度学习驱动的漫画翻译自动化工具
BallonsTranslator:深度学习驱动的漫画翻译自动化工具 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项目地址: https:…...
新手友好:通过快马平台轻松上手vc16188视频处理开发
作为一个刚接触视频处理的新手,我最近在InsCode(快马)平台上尝试了一个vc16188视频基础处理项目,整个过程比我预想的顺利很多。这个平台最让我惊喜的是,它能根据我的需求描述直接生成完整可运行的项目代码,而且代码结构清晰、注释…...
SOLIDWORKS自定义属性模板制作全攻略:从零开始驱动模型参数
SOLIDWORKS自定义属性模板制作全攻略:从零开始驱动模型参数 在机械设计领域,SOLIDWORKS作为主流的三维CAD软件,其自定义属性功能往往被初学者低估。想象一下这样的场景:当你需要批量修改上百个零件的材料规格时,是否还…...
英特尔I350网卡PXE功能深度配置:从FLASH状态查询到端口精准控制
1. 英特尔I350网卡PXE功能基础认知 第一次接触服务器网卡PXE配置的朋友可能会觉得这是个"黑盒子"。其实简单来说,PXE(Preboot eXecution Environment)就是让计算机在没装系统的情况下,通过网络启动并安装操作系统的技术…...
noTunes:守护macOS专注体验的开源工具
noTunes:守护macOS专注体验的开源工具 【免费下载链接】noTunes A simple macOS application that will prevent iTunes or Apple Music from launching. 项目地址: https://gitcode.com/gh_mirrors/no/noTunes 在数字工作环境中,音乐应用的自动启…...
