redis数据类型
Redis 数据类型
- redis无论什么数据类型,在数据库中都是以key-value形式保存,并且所有的key(键)都是字符串,所以讨论基础数据结构都是讨论的value值的数据类型
1. 字符串操作
- set key value [ex seconds] [px milliseconds] [nx|xx]
- 设置key及值,过期时间可以使用秒或毫秒为单位
- [ex seconds]是设置过期时间的,单位是秒,默认是永不过期;[px milliseconds]也是设置过期时间的,单位是毫秒;[nx|xx]中的nx是当设置变量的变量存在时,就不再赋值这个变量了,xx是当这个变量存在时,赋入新的值。
-
- ex 设置过期时间
//创建key名=name,key值=bob,过期时间为10秒
127.0.0.1:6379> set name bob ex 10
OK
127.0.0.1:6379> ttl name
(integer) 4 ---还剩下四秒就过期了
127.0.0.1:6379> ttl name
(integer) -2 ---已经过期了
-
- nx 当没有输入key名,就定义存储,反之如果有这个key名时,就不定义存储数据了
127.0.0.1:6379> set id 88
OK
127.0.0.1:6379> keys *
1) "id"
127.0.0.1:6379> get id
88
127.0.0.1:6379> set id 99 nx ------返回值是(nil),意思就是没有存储id这个变量
(nil)
127.0.0.1:6379> get id ---因为id这个key名已经存在所以set id 99 nx操作无效
"88"
- 3. xx 意思是不管key名存在不存在,都对这个key名进行定义并存储(默认就是xx)
127.0.0.1:6379> get id --查看id的key值
"99"
127.0.0.1:6379> set id 100 xx --覆盖key名为id的值为100
OK
127.0.0.1:6379> get id ---查看id的值99改为100
"100"
- setrange key offset value ------从偏移量开始复写key的特定位的值
127.0.0.1:6379> set name bob -----创建key名=name,key值=bob
OK
127.0.0.1:6379> get name ----查看key名=name的值
"bob"
127.0.0.1:6379> setrange name 2 y -----修改从key值=bob的第二个字符开始修改为y,计算是从0开始的。
(integer) 3
127.0.0.1:6379> get name ----查看name的值
"boy"
127.0.0.1:6379> setrange name 0 andy
(integer) 4
127.0.0.1:6379> get name
"andy"
- strlen key ------统计字符串长度
127.0.0.1:6379> get name
"andy"
127.0.0.1:6379> strlen name ----查看name值的字符串长度为4
(integer) 4
- append key value -------key值存在则追加,不存在则创建key及value,返回key长度
127.0.0.1:6379> get name
"andy"
127.0.0.1:6379> append name db --在key值为andy的后面添加db这两个字符。
(integer) 6
127.0.0.1:6379> get name ---查看name的值
"andydb"127.0.0.1:6379> keys *
1) "name"
2) "id"
127.0.0.1:6379> append age 28 ----可以看的出来age不存在,所以这条命令意思是创建key名=age,key值=28
(integer) 2
127.0.0.1:6379> get age
"28"
- setbit key offset value ------位存储
- bitcount key —查询key值为1的数量
- 1T=1024G、1G=1024M、1M=1024K、1K=1024字节、1字节=8位、1位=0或1
- 使用场景:
-
记录网站用户上线频率,如用户A上线了多少天等类似的数据
-
如用户在某天上线,则使用setbit,以用户名为key,将网站上线日为offset,并在该offset上设置1,最后计算用户总上线次数时,使用bitcount用户名即可。
-
这样,即使网站运行10年,每个用户仅占用10*365比特位即456字节。
- 对key所存储的字串,设置或清除特定偏移量上的位(bit)
- value的值可以为1或0,offset为0~2^32之间
- key不存在,则创建新的key
//假如1位在线天数,0代表不在线,yy为用户
127.0.0.1:6379> setbit yy 1 1
(integer) 0
127.0.0.1:6379> setbit yy 2 0
(integer) 0
127.0.0.1:6379> setbit yy 3 1
(integer) 0
127.0.0.1:6379> setbit yy 4 1
(integer) 0
127.0.0.1:6379> setbit yy 5 0
(integer) 0
127.0.0.1:6379> setbit yy 6 1
(integer) 0
127.0.0.1:6379> setbit yy 7 1
(integer) 0
127.0.0.1:6379> bitcount yy ---统计用户yy一周在线天数为5
(integer) 5
- decr key -----将key中的值减1,key不存在则先初始化为0,再减1
127.0.0.1:6379> get age
"28"
127.0.0.1:6379> decr age ---age的值为28-1=27
(integer) 27
127.0.0.1:6379> get age
"27"127.0.0.1:6379> decr bb ----当bb不存在时就是0-1=-1
(integer) -1
127.0.0.1:6379> get bb
"-1"
- decrby key decrement ---------将key中的值,减去decrement。decrement只能为整数
127.0.0.1:6379> get age
"27"
127.0.0.1:6379> decrby age 2 age值27-2=25
(integer) 25
127.0.0.1:6379> get age
"25"
127.0.0.1:6379> decrby age 5 age值25-5=20
(integer) 20
127.0.0.1:6379> get age
"20"
- incr key --------将key的值加1,如果key不存在,则初始为0后再加1
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> incr age age的值加一:20+1=21
(integer) 21127.0.0.1:6379> keys *
1) "yy"
2) "bb"
3) "id"
4) "name"
5) "age"
127.0.0.1:6379> incr ys ys不存在,所以是0+1=1
(integer) 1
127.0.0.1:6379> get ys
"1"
- incrby key increment ------将key的值增加increment。decrement只能为整数
127.0.0.1:6379> get age
"21"
127.0.0.1:6379> incrby age 20 age的值加二十:21+20=41
(integer) 41
127.0.0.1:6379> get age
"41"
- incrbyfloat key increment -----为key中所储存的值加上浮点数增量 increment
127.0.0.1:6379> set id 20
OK
127.0.0.1:6379> get id
"20"
127.0.0.1:6379> incrbyfloat id 0.3 ---id的值加零点三:20+0.3=20.3
"20.3"
127.0.0.1:6379> get id
"20.3"
- getrange key start end
- 返回字串值中的子字串,截取范围为start和end
- 负数偏移量表示从末尾开始计数,-1表示最后一个字符,-2表示倒数第二个字符
127.0.0.1:6379> set likes "Play basketball"
OK
127.0.0.1:6379> get likes
"Play basketball"127.0.0.1:6379> getrange likes 0 3 ---查看likes值的第一个字符到第四个字符,默认从0开始算的。
"Play"127.0.0.1:6379> getrange likes -2 -1 ---查看likes指的倒数第二字符和倒数第一。
"ll"
2. List列表
2.1. List列表简介
- Redis的list是一个字符队列
- 先进后出,变量中先存进去的值,是在最后显示出来的
- 一个key可以有多个值
2.2. List列表命令操作
- lpush key value [value…] -----将一个或多个值value插入到列表key的表头,key不存在,则创建key
- lrange key start stop ----从开始位置读取key的值到stop结束
127.0.0.1:6379> lpush hostname www.baidu.com www.jd.com www.taobao.com ---创建hostname的值为www.baidu.com、www.jd.com、www.taobao.com
(integer) 3
127.0.0.1:6379> lrange hostname 0 -1 ---查看hostname列表的值从第一个到最后一个。
1) "www.taobao.com"
2) "www.jd.com"
3) "www.baidu.com"
127.0.0.1:6379> lrange hostname 0 1
1) "www.taobao.com"
2) "www.jd.com"127.0.0.1:6379> lpush hostname www.jk.com www.sxy.com ---在hostname值追加www.jk.com、www.sxy.com
(integer) 5
127.0.0.1:6379> lrange hostname 0 -1 ---查看hostname所有的值
1) "www.sxy.com"
2) "www.jk.com"
3) "www.taobao.com"
4) "www.jd.com"
5) "www.baidu.com"
- lpop key -----移除并返回列表头元素数据(即删除列表中的第一个值),key不存在则返回nil
127.0.0.1:6379> lrange hostname 0 -1
1) "www.sxy.com"
2) "www.jk.com"
3) "www.taobao.com"
4) "www.jd.com"
5) "www.baidu.com"
127.0.0.1:6379> lpop hostname ---删除hostname第一个值:1) "www.sxy.com"
"www.sxy.com"
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.baidu.com"
- llen key ----返回列表key值的数量
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.baidu.com"
127.0.0.1:6379> llen hostname ---查看hostname有多少个值
(integer) 4
- lindex key index ----查看key列表的某个值
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.baidu.com"127.0.0.1:6379> lindex hostname -1 ---查看hostname最后一个值。
"www.baidu.com"
- lset key index value -----修改指定位置的key值
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.baidu.com"
127.0.0.1:6379> lset hostname -1 www.sxy.com ---修改hostname最后一个值为www.sxy.com
OK
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.sxy.com"
- rpush key value [value…] —在key值的最后面插入一个或者多个值
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.sxy.com"
127.0.0.1:6379> rpush hostname AAAA BBBB CCCC
(integer) 7
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.sxy.com"
5) "AAAA"
6) "BBBB"
7) "CCCC"
- rpop key — 删除key值的末尾的值
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.sxy.com"
5) "AAAA"
6) "BBBB"
7) "CCCC"
127.0.0.1:6379> rpop hostname
"CCCC"
127.0.0.1:6379> lrange hostname 0 -1
1) "www.jk.com"
2) "www.taobao.com"
3) "www.jd.com"
4) "www.sxy.com"
5) "AAAA"
6) "BBBB"
3. Hash表
3.1. Hash表介绍
-
是一个string类型的field和value的映射表
-
一个key可对应多个field,一个field对应一个value
-
将一个对象存储为hash类型,较于每个字段都存储成string类型更能节省内存
3.2. Hash表命令操作
- hset key field value ----将hash表中field值设置为value,一次给一个或多个列赋值
- hget key field -----获取hash表中field的值
- hmget key field [field …] ----获取hash表的一个列名值和多个列名值
- hgetall key ----获取hash表中的所有列名和列值
- hkeys key ----获取hash表中的所有列名
- hvals key ----获取hash表中的所有列值
- hdel key field [field …] ----删除hash表的一个列名的值和多个列名的值
127.0.0.1:6379> hset stuinfo name bob sex boy age 18 ---创建hash表名为stuinfo,列名名=name 列值=bob,列名=sex 列值=boy,列名=age 列值=18
(integer) 3127.0.0.1:6379> hget stuinfo name ---查看hash表名=stuinfo,列名=name的值
"bob"127.0.0.1:6379> hmget stuinfo name sex age ---获取hash表stuinfo的列名为:name、sex、age的值
1) "bob"
2) "boy"
3) "18"
127.0.0.1:6379> hgetall stuinfo ---获取hash表stuinfo的所有列名和列值
1) "name"
2) "andy"
3) "sex"
4) "boy"
5) "age"
6) "18"127.0.0.1:6379> hkeys stuinfo ---获取hash表stuinfo的所有列名
1) "name"
2) "sex"
3) "age"127.0.0.1:6379> hvals stuinfo ---获取hash表stuinfo的所有列值
1) "andy"
2) "boy"
3) "18"127.0.0.1:6379> hkeys stuinfo
1) "name"
2) "sex"
3) "age"
127.0.0.1:6379> hdel stuinfo name sex ----删除hash表stuinfo的列名为name、sex和值
(integer) 2
127.0.0.1:6379> hkeys stuinfo
1) "age"相关文章:
redis数据类型
Redis 数据类型 redis无论什么数据类型,在数据库中都是以key-value形式保存,并且所有的key(键)都是字符串,所以讨论基础数据结构都是讨论的value值的数据类型 1. 字符串操作 set key value [ex seconds] [px milliseconds] [nx|xx] 设置ke…...
【独家】华为OD机试 - 最多获得的短信条数(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...
【剧前爆米花--爪哇岛寻宝】包装类的装拆箱和泛型的擦除机制
作者:困了电视剧 专栏:《数据结构--Java》 文章分布:这是关于数据结构的基础之一泛型的文章,希望对你有所帮助。 目录 包装类 装箱 装箱源码小细节 拆箱 泛型 什么是泛型 泛型编译的擦除机制 不能实例化泛型类型数组 包装…...
BufferQueue研究
我们在工作的过程中,肯定听过分析卡顿或者冻屏问题的时候,定位到APP卡在dequeueBuffer方法里面,或者也听身边的同事老说3Buffer等信息。所以3Buffer是什么鬼?什么是BufferQueue?搞Android,你一定知道Graphic Buffer和…...
【计组笔记08】计算机组成与原理之IO设备系统(输入、输出设备、外存储器)
这篇文章,主要介绍计算机组成与原理之IO设备系统(输入、输出设备、外存储器)。 目录 一、IO设备系统 1.1、IO系统的演变 (1)早期阶段 (2)接口模块和DMA阶段...
使用Vue实现数据可视化大屏功能(一)
导语 现在在很多的工程项目中,都有有关于数据大屏相关的监控内容,这里我们就来看一下如何用Vue来搭建一个数据可视化大屏应用。 创建项目 使用WebStorm工具创建一个Vue的项目。如下图所示,配置好vue的脚手架工具和nodejs的运行环境&#…...
华为OD机试真题Python实现【整数对最小和】真题+解题思路+代码(20222023)
整数对最小和 题目 给定两个整数数组 array1 array2 数组元素按升序排列 假设从array1 array2中分别取出一个元素可构成一对元素 现在需要取出K个元素 并对取出的所有元素求和 计算和的最小值 注意: 两对元素如果对应于array1 array2中的两个下标均相同,则视为同一个元素 �…...
2023年绿色建筑国际会议(ICoGB 2023)
2023年绿色建筑国际会议(ICoGB 2023) 重要信息 会议网址:www.icogb.org 会议时间:2023年5月19-21日 召开地点:斯德哥尔摩 截稿时间:2023年4月1日 录用通知:投稿后2周内 收录检索ÿ…...
【力扣1653】使字符串平衡的最少删除次数
给你一个字符串 s ,它仅包含字符 a 和 b 。你可以删除 s 中任意数目的字符,使得 s 平衡 。当不存在下标对 (i,j) 满足 i < j ,且 s[i] b 的同时 s[j] a ,此时认为 s 是 平衡 的。请你返回使 s 平衡 的 最少 删除次数。…...
链表的中间结点与链表的倒数第k个结点(精美图示详解哦)
全文目录引言链表的中间结点题目描述与思路实现链表的倒数第k个结点题目描述与思路实现总结引言 在上一篇文章中,介绍了反转链表 我们利用了链表是逻辑连续的特点,逆置了链表的逻辑连接顺序,从而实现反转链表: 戳我查看反转链表详…...
防静电监控仪可以检测现场设备是否和实际大地接触
随着电子产品集成化度越来越高,对于电子产品装配来说,静电的危害严重影响到产品的质量、成品率和可靠性, 必须对用于电子产品装配的净化间进行系统防静电措施,将生产过程中的静电危害程度降至最低。近年来电子企业对ESD的危害的深入认识&…...
计算机网络第八版——第二章课后题答案(超详细)
第二章 该答案为博主在网络上整理,排版不易,希望大家多多点赞支持。后续将会持续更新(可以给博主点个关注~ 第一章 答案 【2-01】物理层要解决哪些问题?物理层的主要特点是什么? 解答:物理层考虑的是怎…...
2023年3月全国DAMA-CDGA/CDGP数据管理认证火热报名中...
弘博创新是DAMA中国授权的数据治理人才培养基地,贴合市场需求定制教学体系,采用行业资深名师授课,理论与实践案例相结合,快速全面提升个人/企业数据治理专业知识与实践经验,通过考试还能获得数据专业领域证书。 DAMA认…...
查询与进程调度(CFS)相关信息
目录 查询与进程相关的调度信息 查看CFS调度信息 CPU相关的信息 CFS就绪队列的总运行时间 实时队列与deadline调度的相关信息 所有进程相关的信息 查询与进程相关的调度信息 进程的nice值,优先级,调度策略,vruntime等信息。在proc目录下…...
07对MVC的理解
MVC是一种设计模式,用于将应用程序的不同方面分离开来,以便更容易地管理和维护应用程序。MVC代表模型-视图-控制器,它将应用程序分为三个主要组件:模型(Model):负责管理应用程序的数据和业务逻辑…...
WebSocket与Socket、TCP、HTTP的关系
目录:1、名词解析;2、WebSocket简介与原理;3、WebSocket和Http的关系和异同点;4、WebSocket与Socket的区别;5、Socket和TCP/IP;6、一个应用程序的通信链路;1、基础名词解析:…...
音频基础知识简述 esp-sr 上手指南
此篇博客先对音频基础知识进行简要叙述,然后帮助读者入门 esp-sr SDK。 1 音频的基本概念 1.1 声音的本质 声音的本质是波在介质中的传播现象,声波的本质是一种波,是一种物理量。 两者不一样,声音是一种抽象的,是声…...
Flex弹性布局一文通【最全Flex教学】
文章目录一.Flex布局1.1 传统布局和flex布局1.1.1 传统布局1.1.2 flex弹性布局1.2 flex初步体验1.3 布局原理二.常见Flex属性2.1 常见父项属性2.2 flex-direction主轴的方向2.3 justify-content设置主轴上的子元素排列方式2.4 设置子元素是否flex-wrap换行2.5 align-itmes设置侧…...
Navicat使用教程
Navicat:一个可以对别人的数据库进行操作的软件(需要与如mysql等数据库配套使用) 1. 下载mysql MySQL :: Download MySQL Community Server (Archived Versions) 下载上面那个版本 下载下来是个压缩包,解压 2.配置mysql (1)在…...
35岁测试人该何去何从?10年工作经验的我,只不过是一年的工作经验用了10年......
如果到了这个年龄,还是初级测试,或者只会一些简单的自动化测试,那么真的是不好干了。 35的年龄,企业对员工是有另一层面的考量。 简单来说,就是年龄上去了,能力也要上去,要么是技术专家&#…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
