当前位置: 首页 > news >正文

redis介绍和安装、redis普通连接和连接池、字符串类型、hash类型、列表类型列表类型

文章目录

  • redis介绍和安装
    • 安装
        • 步骤
        • 启动,连接
  • redis普通连接和连接池
    • 普通连接
    • 连接池
  • redis字符串类型
  • redis hash类型
  • redis列表类型

redis介绍和安装

  1. redis 什么?
    • 数据库就是个存数据的地方:只是不同数据库数据组织,存放形式不一样
    • 关系型数据库:mysql、oracle、sqlserver、postgrasql
    • 非关系型数据(no sql):redis,mongodb,clickhouse,infludb,elasticsearch,hadoop
      • 没有sql:没有sql语句
      • not olny sql 不仅仅是sql
    • redis:一款纯内存存储的非关系型数据库(数据都在内存),速度非常快

  2. redis特点:https://www.cnblogs.com/liuqingzheng/articles/9833534.html
    • redis是一个key-value存储系统
    • 数据类型丰富,支持5大数据类型:字符串,列表,hash(字典),集合,有序集合
    • 纯内存操作
    • 可以持久化:能都把内存数据,保存到硬盘上永久存储

  3. redis为什么这快?
    • 纯内存,减少io
    • 使用了 io多路复用的 epoll 网络模型
    • 数据操作是单线程,避免了线程间切换
      • 多个客户端同时操作,不会存在并发安全问题

安装

  1. 最新是7,公司里5、6比较多
  2. 开源软件,免费的,他们不支持win
    • epoll模型不支持win
  3. 微软官方:基于源码修改 ⇢ \dashrightarrow 编译成可执行文件
  4. 第三方:https://github.com/tporadowski/redis/releases/
步骤
  1. win:下载安装包,一路下一步
    • 安装目录在环境变量中:任意路径敲 redis-server reidis-cli 都能找到
    • redis做成了服务,以后通过服务启动即可
  2. mac:官网下载,解压即可
win,mac:两个可执行文件:
redis-server :等同于 mysqld
reidis-cli :等同于mysql
启动,连接
  1. 启动方式

    • 使用服务启动
    • 使用命令启动:redis-server
  2. 连接
    1.本地:redis-cli
    2.远端:redis-cli -h 地址 -p 端口(默认端口6379)

  3. 图形化客户端

    • resp: https://github.com/lework/RedisDesktopManager-Windows/releases
    • Navicate
      连接上发现有16个库
  4. 放值
    使用图形化客户端放入值

  5. 取值
    cmd中连接Redis后:get key

redis普通连接和连接池

  1. python 代码作为客户端—》连接

  2. 安装模块: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为实例化得到对象

  1. 新增或修改:conn.set(key, value, ex=None, px=None, nx=False, xx=False)
    • ex:过期时间(秒)
    • px:过期时间(毫秒)
    • nx:如果设置为True,则只有key不存在时,当前set操作才执行,值存在,就修改不了,执行没效果
    • xx:如果设置为True,则只有key存在时,当前set操作才执行,值存在才能修改,值不存在,不会设置新值
  2. sex中nx为Ture:conn.setnx(key, value)
  3. sex中ex传值:conn.setex(name, value, time)
  4. sex中px传值:conn.psetex(name, time_ms, value)
  5. 批量新增或修改:conn.mset(*args, **kwargs)
  6. 获取值:conn.get(key)
  7. 批量获取值:conn.mget(keys, *args)
  8. 新增或修改值并返回之前的值:conn.getset(key, value)
  9. 获取start到end的字符:conn.getrange(key, start, end)
  10. 从offset位置开始修改成value:conn.setrange(key, offset, value)
  11. conn.setbit(key, offset, value)
  12. conn.getbit(key, offset)
  13. conn.bitcount(key, start=None, end=None)
  14. conn.bitop(operation, dest, *keys)
  15. 统计长度:conn.strlen(key)
  16. 自加整数:conn.incr(key, amount=1)
    key值为数字,amount默认1,执行一遍,值增加amount
  17. 自加浮点型:conn.incrbyfloat(key, amount=1.0)
  18. 自减整数:conn.decr(self, key, amount=1)
  19. 自减浮点型:conn.append(key, value)

redis hash类型

hash 类型,就是咱们python中的字典类型, 数据结构:数据的组织形式 底层存储 数组 ⇢ \dashrightarrow 根据key值使用hash函数得到结构,存到数组中
字典的key值必须可hash
字典的key值必须是不可变数据类型
hash 类型无序,跟放的先后顺序无关的
python 的字典是 有序的 字典+列表

  1. 新增或修改:conn.hset(name, key, value)
  2. 批量新增或修改:conn.hmset(name, mapping)
    conn.hmset('userinfo2',{'name':'pyy',"age":33})
    conn.hset('userinfo3',mapping={'name':'xxx',"age":33})
    
  3. 获取值:conn.hget(name,key)
  4. 批量获取值:conn.hmget(name, keys, *args)
  5. 取出hash中里的所有数据(k:v):conn.hgetall(name)
  6. 获取hash中数据数量:conn.hlen(name)
  7. 以列表获取所有key:conn.hkeys(name)
  8. 以列表获取所有value:conn.hvals(name)
  9. 验证hash中有无key值,返回布尔值:conn.hexists(name, key)
  10. 批量删除值:conn.hdel(name,*keys)
    conn.hdel('userinfo', 'age', 'hobby')
    
  11. 将key值自增:conn.hincrby(name, key, amount=1)
  12. 将key值自增(浮点型):conn.hincrbyfloat(name, key, amount=1.0)
  13. 从name中cursor位置取出count个值:conn.hscan(name, cursor=0, match=None, count=None)
  14. 一次性全取出,成迭代器:conn.hscan_iter(name, match=None, count=None)

redis列表类型

进行操作列表类型的表

  1. 从列表最左边数据新增:conn.lpush(name, values)
  2. 从列表最右边数据新增:conn.rpush(name, values)
  3. 列表name存在时,从左边新增:conn.lpushx(name, value)
  4. 列表name存在时,从右边新增:conn.rpushx(name, value)
  5. 获取列表长度:conn.llen(name)
  6. 以refvalue为参照物添加值:conn.linsert(name, where, refvalue, value))
    • 前:where=before
    • 后:where=after
  7. 修改indexconn.lset(name, index, value)
  8. 从左侧删count个value值:conn.lrem(name, count, value)
  9. 从列表左侧删除并弹出:conn.lpop(name)
  10. 从列表右侧删除并弹出:conn.rpop(name)
  11. 取出index位置的值:conn.lindex(name, index)
  12. 从start位置到end位置取出:conn.lrange(name, start, end)
  13. 留下从start位置到end位置,其他全部删除:conn.ltrim(name, start, end)
  14. 从列表src右侧弹出添加到dst左侧:conn.rpoplpush(src, dst)
  15. 从左侧阻塞式弹出:conn.blpop(keys, timeout)
    • 如果列表内没值,timeout(秒)时间到返回None
  16. 从左侧阻塞式删除弹出:conn.brpop(keys, timeout)
  17. 阻塞式从列表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>头文件声明了一组函数来执行数学运算&#xff0c;例如&#xff1a;sqrt()计算平方根&#xff0c;log()查找数字的自然对数&#xff0c;等等。 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直接赋值&#xff0c;不需要定义变量类型。不需要**,逗号结尾符 使用print**直接进行输出 #赋值 a 1.0 print(a)a 7 print(a)p…...

C语言-预处理与库

预处理、动态库、静态库 1. 声明与定义分离 一个源文件对应一个头文件 注意&#xff1a; 头文件名以 .h 作为后缀头文件名要与对应的原文件名 一致 例&#xff1a; 源文件&#xff1a;01_code.c #include <stdio.h> int num01 10; int num02 20; void add(int a, in…...

王道数据结构课后代码题p40 9.给定一个带表头结点的单链表,写出算法 : 按递增次序输出单链表中各结点的数据元素并释放结点 (c语言代码实现)

本题代码如下&#xff08;有注释&#xff09; void delete_min(linklist* head) {while ((*head)->next ! NULL)//循环到只剩下头节点{lnode* pre *head;//pre为元素最小结点的前驱结点指针lnode* p (*head)->next;//p为工作指针lnode* q;//指向被删除的结点while (p-…...

对系统的 Go 版本进行升级

方法一 直接升级系统的 Go 版本 注意以下操作仅适用于&#xff1a;amd64 架构的 Centos 系统。如果需要适配其他架构&#xff0c;需要自行编写代码实现。 手动执行&#xff1a; # 显示当前版本 go version # 查看环境变量 cat /etc/profile # 进入 go 的安装目录&#xff0c;…...

【从删库到跑路 | MySQL总结篇】事务详细介绍

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、事务…...

七牛云1024创建节-赛后有感

距离比赛结束已经过去快半个月时间&#xff0c;七牛云又发起了有奖征文的活动&#xff0c;正好借此机会记录一下自己参加这次比赛的经历&#xff0c;感受和一些比赛的心得。 如何了解到的比赛信息 其实我很早就开始关注七牛云了&#xff0c;最早是在今年二三月的时候&#xf…...

CSS 选择器优先级,!important 也会被覆盖?

目录 1&#xff0c;重要性2&#xff0c;专用性3&#xff0c;源代码顺序 CSS 属性值的计算过程中。其中第2步层叠冲突只是简单说明了下&#xff0c;这篇文章来详细介绍。 层叠冲突更广泛的被称为 CSS选择器优先级计算。 为什么叫层叠冲突&#xff0c;可以理解为 CSS 是 Cascadi…...

关于src别名的配置之tsconfig.json配置

tsconfig.json {"compilerOptions": {"baseUrl": "./", // 解析非相对模块的基地址&#xff0c;默认是当前目录"paths": { //路径映射&#xff0c;相对于baseUrl"/*": ["src/*"] }} } ① "baseUrl": &…...

Mybatis如何执行批量操作

文章目录 Mybatis如何执行批量操作使用foreach标签 使用ExecutorType.BATCH如何获取生成的主键 Mybatis如何执行批量操作 使用foreach标签 foreach的主要用在构建in条件中&#xff0c;它可以在SQL语句中进行迭代一个集合。foreach标签的属性主要有item&#xff0c;index&…...

LeetCode 1094. 拼车:优先队列

【LetMeFly】1094.拼车&#xff1a;优先队列 力扣题目链接&#xff1a;https://leetcode.cn/problems/car-pooling/ 车上最初有 capacity 个空座位。车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不允许掉头或改变方向&#xff09; 给定整数 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 来处理文件上传&#xff0c;想必是大家耳熟能详的了&#xff0c;如下代码&#xff1a; ResponseBody PostMapping("/upload") public String upload(Request…...

MFC 发布CLXHHandleEngine动态库1.0.0.0版本

第一版发布以下功能&#xff0c;此项目使用VS2013创建&#xff0c;项目配置包括Unicode的Mdd,md与多字节版本&#xff1a; //MFC Grid表格 #include "../MFCGridCtrl/GridCtrl.h" //使用AES与Base64加密解密可以与java中的AES加解密衔接 //AES加密解密 #include &q…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...