第一节:Redis的数据类型和基本操作

最近整理了关于Redis的一些文档,分享给大家,后续会持续更新......

    1. Redis的数据类型
      1. 字符串String

String:字符串,可以存储String、Integer、Float型的数据,甚至是二进制数据,一个字符串最大容量是512M

      1. 列表List

List:字符串List,底层实现上不是数组,而是链表,也就是说在头部和尾部插入一个新元素,其时间复杂度是常数级别的;其弊端是:元素定位比数组慢

      1. 集合Set

Set:字符串Set,无序不可重复,是通过HashTable实现的

      1. 哈希Hash

Hash:按Hash方式来存放字符串

      1. 有序集合ZSet

ZSet:字符串Set,有序且不可重复,根据Score来排序。底层使用散列表和跳跃表来实现,所以读取中间部分数据也很快

    1. Redis的基本操作
      1. Keys常用操作命令
  1. Keys:获得符合规则的键名列表
    1. 格式是keys pattern,pattern支持glob风格通配符格式:
    2. (1)? 匹配一个字符
    3. (2)* 匹配任意个字符
    4. (3)[] 匹配中括号内的任一字符,可以用-来表示一个范围
    5. (4)\x 匹配字符x,用于转义符号
  2. exists:判断键值是否存在,格式是exists key
  3. del:删除key,格式是del key。

小技巧:Del命令不支持通配符,可以结合linux管道和xargs命令来自定义

删除,示例如下:redis-cli keys k* | xargs redis-cli del

  1. type:获得键值的数据类型,格式是type key
  2. rename:改名,格式是rename oldKey newKey
  3. renamenx:如果不存在则改名,格式是rename oldKey newKey
      1. 处理过期keys的命令

1:expire:设置过期时间,格式是expire key值 秒数

2:expireat:设置过期时间,格式是expireat key值 到秒的时间戳

3:ttl:查看还有多少秒过期,格式是ttl key值,-1表示永不过期,-2表示已过期

4:persist:设置成永不过期,格式是persist key值,删除key的过期设置;另外使用set或

者getset命令为键赋值的时候,也会清除键的过期时间

5:pttl:查看还有多少毫秒过期,格式是pttl key值

6:pexpire:设置过期时间,格式是pexpire key值 毫秒数

7:pexpireat:设置过期时间,格式是pexpireat key值 到毫秒的时间戳

      1. String类型的操作命令

1:get、set、del:获取key的值、设置key和值、删除key

2:incr、decr:递增和递减整数值,格式是incr key值

3:incrby、decrby:递增和递减整数值,可指定增减的数值,格式是incrby key值 正负数值

4:incrbyfloat:递增和递减浮点数值,格式是incrbyfloat key值 正负数值

5:append:在尾部追加值,格式是append key值 追加的值

6:getrange:获取指定索引范围内的值,格式是getrange key值 起始索引 结束索引

7:setrange:从索引位置开始设置后面的值,格式是setrange key值 offset索引 值

8:strlen:返回键值的长度,格式是strlen key值

9:mget:同时获得多个键的值,格式是mget 多个key值

10:mset:同时设置多个键值对,格式是mset key值 value , key和value可以多对

11:bitcount:获取范围内为1的二进制位数,格式是bitcount key值 [start end]

12:getbit:获取指定位置的二进制位的值,格式是getbit key值 offset索引

13:setbit:设置指定位置的二进制位的值,格式是setbit key值 offset索引 值

14:bitop:对多个二进制值进行位操作,格式是bitop 操作 目的key key值1 key值2,操作有and、or、

xor、not,key值可以是多个

15:getset:原子的设置key的值,并返回key的旧值 ,格式是getset key value

      1. List类型的操作命令

1:lpush/rpush:添加值,格式是 rpush list的key item项的值,值可以是多个

2:lrange:按索引范围获取值,格式是 lrange list的key 起始索引 终止索引,-1表示最后一个索引

3:lindex:获取指定索引的值,格式是 lindex list的key 索引号

4:lpop/rpop:弹出值,格式是 lpop list的key

5:llen:获取元素个数,格式是llen list的key

6:lrem:删除元素,格式是lrem list的key 数量 item项的值,数量可正负,表示从左或右删除,如果数

量为0,表示删除全部与给定值相等的项

7:ltrim:保留指定索引区间的元素,格式是ltrim list的key 起始索引 结束索引

8:blpop/brpop:弹出值,格式是blpop list的key值 过期时间,key可以是多个,如果没有值,会一值等

待有值,直到过期

9:rpoplpush:将元素从一个列表转移到另外一个列表,格式是rpoplpush 源list的key值 目的list的key

10:brpoplpush:将元素从一个列表转移到另外一个列表,格式是brpoplpush 源list的key值 目的list的

key值 过期时间

11:lset:设置指定索引的值,格式是lset list的key 索引 新的值

12:linsert:插入元素,格式是linsert list的key before|after 定位查找的值 添加的值

      1. Set类型的操作命令

1:sadd:添加元素,格式是 sadd set的key item项的值,item项可以多个

2:smembers:获取集合中所有元素,格式是 smembers set的key

3:sismember:判断元素是否在集合众,格式是 sismember set的key item项的值

4:srem:删除元素,格式是 srem set的key item项的值

5:scard:获取集合中元素个数,格式是scard set的key

6:srandmember:随机获取集合中的元素,格式是srandmember set的key [数量],数量为正的时候,会随

机获取这么多个不重复的元素;如果数量大于集合元素个数,返回全部;如果数量为负,会随机获得这

么多个元素,可能有重复

7:spop:弹出元素,格式是spop set的key

8:smove:移动元素,格式是smove 源set的key 目的set的key item项的值

9:sdiff:差集,返回在第一个set里面而不在后面任何一个set里面的项,格式是sdiff set的key 用来比

较的多个set的key

10:sdiffstore:差集并保留结果,格式是命令 存放结果的set的key set的key 用来比较的多个set的key

11:sinter:交集,返回多个set里面都有的项,格式是sinter 多个set的key

12:sinterstore:交集并保留结果,格式是sinter 存放结果的set的key 多个set的key

13:sunion:并集,格式是sunion 多个set的key

14:sunionstore:并集并保留结果,格式是sunionstore 存放结果的set的key 多个set的key

      1. Hash类型的操作命令

1:hset:设置值,格式是hset Hash的Key 项的key 项的值

2:hmset:同时设置多对值,格式是hmset Hash的Key 项的key 项的值,项的key和值可多对

3:hgetall:获取该Key下所有的值,格式是hgetall Hash的Key

4:hget:获取值,格式是hget Hash的Key 项的key

5:hmget:同时获取多个值,格式是hmget Hash的Key 项的key,项的key可以是多个

6:hdel:删除某个项,格式是hdel Hash的Key 项的key

7:hlen:获取Key里面的键值对数量,格式是hlen Hash的Key

8:hexists:判断键值是否存在,格式是hexists Hash的Key 项的key

9:hkeys:获取所有Item的key,格式是hkeys Hash的Key

10:hvals:获取所有Item的值,格式是hvals Hash的Key

11:hincrby:增减整数数字,格式是hincrby Hash的Key 项的key 正负整数

12:hincrbyfloat:增减Float数值,格式是hincrbyfloat Hash的Key 项的key 正负float

13:hsetnx: 如果项不存在则赋值,存在时什么都不做, 格式是hsetnx Hash的Key 项的

key 项的值

      1. ZSet类型的操作命令

1:zadd:添加元素,格式是zadd zset的key score值 项的值,Score和项可以是多对,score可以是整数,

也可以是浮点数,还可以是+inf表示正无穷大,-inf表示负无穷大

2:zrange:获取索引区间内的元素,格式是zrange zset的key 起始索引 终止索引 (withscores)

3:zrangebyscore:获取分数区间内的元素,格式是zrangebyscore zset的key 起始score 终止score

(withscores),默认是包含端点值的,如果加上“(”表示不包含;后面还可以加上limit来限制

4:zrem:删除元素,格式是zrem zset的key 项的值,项的值可以是多个

5:zcard:获取集合中元素个数,格式是zcard zset的key

6:zincrby:增减元素的Score,格式是zincrby zset的key 正负数字 项的值

7:zcount:获取分数区间内元素个数,格式是zcount zset的key 起始score 终止score

8:zrank:获取项在zset中的索引,格式是zrank zset的key 项的值

9:zscore:获取元素的分数,格式是zscore zset的key 项的值,返回项在zset中的score

10:zrevrank:获取项在zset中倒序的索引,格式是zrevrank zset的key 项的值

11:zrevrange:获取索引区间内的元素,格式是zrevrange zset的key 起始索引 终止索引 (withscores)

12:zrevrangebyscore:获取分数区间内的元素,格式是zrevrangebyscore zset的key 终止score 起始

score (withscores)

13:zremrangebyrank:删除索引区间内的元素,格式是zremrangebyrank zset的key 起始索引 终止索引

14:zremrangebyscore:删除分数区间内的元素,格式是命令 zset的key 起始score 终止score

15:zinterstore:交集,格式是ZINTERSTORE dest-key key-count key [key ...] [WEIGHTS weight

[weight ...]] [AGGREGATE SUM|MIN|MAX]

16:zunionstore:并集,格式是ZUNIONSTORE dest-key key-count key [key ...] [WEIGHTS weight

[weight ...]] [AGGREGATE SUM|MIN|MAX]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IS-IS DIS

原理概述 OSPF 协议支持4种网络类型, IS-IS 协议只支持两种网络类型,即广播网络和点到点网络。与 OSPF 协议相同, IS-IS 协议在广播网络中会将网络视为一个伪节点( Pseudonode ,简称 PSN ),并选举出一台 DIS ( Designa…

ISCC2024个人挑战赛WP-WEB

(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考) 还没想好名字的塔防游戏 GET /world.js HTTP/1.1 Host: 101.200.138.180:17345 Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,i…

springcloud多个服务共用同一个nacos配置

spring:profiles:active: devcloud:nacos:config:server-addr: 172.168.1.xx:8848enabled: truefile-extension: yamlnamespace: public#按需引入nacos中的配置#shared-configs: database.yamlextension-configs:# 数据源配置- data-id: database.yamlgroup: DEFAULT_GROUP# re…

系统思考—问题分析与持续改进

刚刚为一家500强企业完成了《系统思考—问题分析与持续改进》的课程。学员们开始意识到,不能仅仅停留在冰山上层事件去解决问题,而是要深入观察隐藏在背后的趋势变化。学会如何识别系统中的深层次原因,并从全局视角来制定更加有效的改进策略。…

电子电器架构 - 车载网管功能简介

电子电器架构 - 车载网管功能简介 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,…

Windows下安装配置深度学习环境

Windows下安装配置深度学习环境 1. 准备工作 1.1 环境准备 操作系统:win10 22H2 GPU:Nvidia GeForce RTX 3060 12G 1.2 安装Nvidia驱动、cuda、cuDNN 下载驱动需要注册并登录英伟达账号。我这里将下面用到的安装包放到了百度网盘,可以关注微信…

DFA 算法

为什么要学习这个算法 前一段时间遇到了瓶颈,因为词库太多了导致会有一些速度过慢,而且一个正则表达式已经放不下了,需要进行拆分正则才可以。 正好我以前看过有关 dfa 的介绍,但是并没有深入的进行研究,所以就趁着周…

词条唤夜兽唤夜兽的养殖与护理 幻兽帕鲁 唤夜兽怎么获取 唤夜兽去哪里抓 crossover玩Steam游戏

唤夜兽在地图上没有出现,是唤冬兽和雷冥鸟共同培育出来的帕鲁。 ------------------------- 介绍: 帕洛斯群岛之守护神,拥呼唤黑夜之力。 其会于灾厄席捲大地之际腾空而起,唤来无尽暗夜,试图封印灾厄。 ---------…

mac操作系统下,docker登录nexus私库,提示不支持https协议的错误

一、背景 我们使用nexus搭建了一个Docker Registry私有仓库,在Mac操作系统,在推送本地镜像到私库前,要求我们登录私库,报错如下: docker login 192.168.5.6:8086 -u username -p passwordWARNING! Using --password …

设计模式10——装饰模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 装饰模式 是一种行为型模式。…

推荐丨快速申请免费域名证书

背景: 域名是一个IP地址上的“面具” 。一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。 域名不仅便于记…

Facebook广告如何开户以及投放费用?

Facebook作为全球最大的社交媒体平台之一,成为了企业与个人推广品牌、产品或服务的重要渠道。其精准的广告定向功能和庞大的用户基数,为广告主提供了无限的商机。云衔科技为企业提供专业的Facebook上开户和运营服务,助力您高效获客。 一、Fa…

Go 1.23 Release Notes编写方式改进!

2024.5.22日,Go 1.23 feature冻结!Go团队开始Go 1.23rc1的冲刺,截至发文时,Go 1.23 milestone已经完成59%(https://github.com/golang/go/milestone/212),还有188个open的issue待解决。 Go 1.23有哪些新feature&#x…

YAML详情

一、kubernetes支持对象 Kubernetes支持YAML和JSON格式管理资源对象 JSON格式:主要用于api接口之间消息的传递YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读 二、YAML语法格式注意点 …

Octo 精武门? :开源的通用机器人模型

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技…

【C++ —— 哈希】学习笔记 | 模拟实现封装unordered_map和unordered_set

文章目录 前言一、unordered系列关联式容器1.1 unordered_map1.2 unordered_set 二、底层结构2.1哈希概念(哈希是一种算法思想)2.2哈希冲突2.3 解决哈希冲突方法:1.直接定址法(值和位置关系是唯一关系,每个人都有唯一位…

NextJs 初级篇 - 安装 | 路由 | 中间件

NextJs 初级篇 - 安装 | 路由 | 中间件 一. NextJs 的安装二. 路由2.1 路由和页面的定义2.2 布局的定义和使用2.3 模板的定义和使用① 模板 VS 布局② 什么是 use client 2.4 路由跳转的方式2.5 动态路由2.6 路由处理程序① GET 请求的默认缓存机制② 控制缓存或者退出缓存的手…

大模型效能工具之智能CommitMessage

01 背景 随着大型语言模型的迅猛增长,各种模型在各个领域的应用如雨后春笋般迅速涌现。在研发全流程的效能方面,也出现了一系列贯穿全流程的提效和质量工具,比如针对成本较高的Oncall,首先出现了高质量的RAG助手;在开…

山东大学软件学院数据库实验1-9(全部)

目录 前言 实验代码 实验一 1-1 1-2 1-3 1-4 1-5 1-6 实验二 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 实验三 3-1 3-2 3-3 3-4 3-5 3-6 3-7 3-8 3-9 3-10 实验四 4-1 4-2 4-3 4-4 4-5 4-6 4-7 4-8 4-9 4-10 实验五 5-1…

鹏特资本进入中国市场具有以下一些优势

1. 带来资金:补充国内资金缺口,为企业发展和项目建设提供重要的资金支持。 2. 先进技术和管理经验:有助于推动技术创新和管理水平提升,促进产业升级和优化。 3. 促进竞争:激发国内市场活力,促使本土企业不…