(二) Redis的常用API的理解和使用

【Redis】Redis 常用命令理解与汇总(超全超详细+持续更新) 1. 查看所有键:keys * (生产环境禁用)2. 查看键总数:dbsizedbsize命令在计算键总数时不会遍历所有键,而是直接获取Redis内置的键总数变量,所以dbsize命令的时间复杂度是O(1)。而 keys 命令会遍历所有键,所以它的时间复杂度是O(n),当Redis保存了大量键时,线上环境禁止使用。exists key。返回键存在的个数,如果 k1,k2 都存在则返回 2;如果 k1 存在,k2 不存在,则返回 1;如果都不存在,返回 0。4. 删除键:del key [...]。 阅读详情

一 通用命令

  • keys *: 遍历打印所有的 key,O(n),后面可以是正则表达式,一般不在生产环境使用,可以用来热备从节点
  • dbsize: 计算 key 的总数,O(1)
  • exists key: 检查 key 是否存在,O(1),存在返回1,不存在返回0
  • del key: 删除指定 key-value,O(1),可一次删除多个,删除成功返回1,删除失败返回0
  • expire key seconds: key 在 seconds 秒后过期,O(1)
  • ttl key: 查看 key 剩余的过期时间,O(1)
  • persist key: 去掉 key 的过期时间,O(1)
  • type key: 返回 key 的类型,O(1)

二 字符串类型(string)

结构:key 是字符串,value 可以是字符串、数字字符串、json 串,本质上 value 都是二进制,最大不能超过 512MB
使用场景: 缓存 计数器 分布式锁
API

  • get key:获取 key 对应的 value,O(1)
  • set key:设置 key-value,O(1)
  • del key:删除 key-value,O(1)
  • incr key:key 自增 1,如果 key 不存在,自增后 get(key)=1,O(1)
  • decr key:key 自减 1,如果 key 不存在,自减后 get(key)=-1,O(1)
  • incrby key k:key 自增 k,如果 key 不存在,自增后 get(key)=k,O(1)
  • decrby key k:key 自减 k,如果 key 不存在,自减后 get(key)=-k,O(1)
  • set key value:不管 key 是否存在,都设置,O(1)
  • setnx key value:key 不存在,才设置,O(1)
  • set key value xx:key 存在,才设置,O(1)
  • mget key1 key2 key3...:批量获取 key,原子操作,O(n)
  • mset key1 value1 key2 value2 key3 value3...:批量设置 key-value,O(n)
  • getset key newvalue:设置新的 newvalue 并返回旧的 value,O(1)
  • append key value:将 value 追加到旧的 value,O(1)
  • strlen key:返回字符串的长度,O(1)
  • incrbyfloat key 3.5:增加 key 对应的值 3.5,O(1)
  • getrange key start end:获取字符串指定下标所有的值,O(1)
  • setrange key index value:设置指定下标所有对应的值,O(1)

三 哈希类型(hash)

结构: key-value,value 类型是一堆的 key-value(field-value),类似“Mapmap”类型。
使用场景: 比如记录每个用户个人主页的访问量
API:都是以“h”开头

  • hget key field: 获取 hash key 对应的 field 的value,O(1)
  • hset key field value: 设置 hash key 对应的 field 的 value,O(1)
  • hdel key field: 删除 hash key 对应的 field 的 value,O(1)
  • hexists key field: 判断 hash key 是否有 field,O(1)
  • hlen key: 获取 hash key field 数量,O(1)
  • hgetall key: 返回 hash key 对应所有的 field 和 value,O(n)
  • hvals key: 返回 hash key 对应的所有 field 的 value,O(n)
  • hkeys key: 返回 hash key 对应所有的field,O(n)
  • hsetnx key field value: 设置 hash key 对应的 field 的 value ,如果field已存在,则设置失败,O(1)
  • hincrby key field intCounter: 设置 hash key 对应的 field 的 value 自增intCounter,O(1)
  • hincrbyfloat key field floatCounter: 设置 hash key 对应的 field 的 value 自增intCounter(浮点数版),O(1)

四 列表类型(list)

结构:key-elements,elements是一个队列,有序,可重复,左右两边插入弹出
使用场景:消息队列 文章列表
API:都是以“l”、“r”开头

  • rpush key value1 value2 value3 ...:从列表右端插入值,O(1~n),插入后顺序是:…,value1,value2,value3
  • lpush key value1 value2 value3 ...:从列表左端插入值,O(1~n),插入后顺序是:value3,value2,value1,…
  • linsert key before|after value newValue:在list指定的值前|后插入 newValue,O(n)
  • pop|rpop key:从列表左侧|右侧弹出一个 item,O(1)
  • lrem key count value:根据 count 值,从列表删除所有 value 相等的项,O(n)
    • count > 0,从左到右删除最多 count 个 value 相等的项
    • count < 0,从右到左删除最多 -count 个 value 相等的项
    • count = 0,删除所有 value 相等的项
  • ltrim key start end:按照索引范围修剪列表,保留 start~end 长度的列表,O(n)
  • lrange key start end:获取列表指定所有 item,包含 end,O(n)
  • lindex key index:获取列表指定索引的 item,O(n)
  • llen key:获取列表长度,O(1)
  • lset key index newValue:设置列表指定索引值为 newValue,O(n)
  • blpop key timeout:lpop 阻塞版本,timeout 是阻塞超时时间,timeout=0 为永远不阻塞,O(1)
  • brpop key timeout:rpop 阻塞版本,timeout 是阻塞超时时间,timeout=0 为永远不阻塞,O(1)

开发技巧:
LRUSH + LPOP = Stack(栈)
LPUSH + RPOP = Queue(队列)
LPUSH + LTRIM = Capped Collection(有限集合)
LPUSH + BRPOP = Message Queue(消息队列)

五 集合类型(set)

结构: key-elements,elements 是一个集合,无序,不重复,支持集合间操作
使用场景:例如抽奖系统,微博的点赞点踩等等
API:都是以“s”开头

  • sadd key element:向集合中添加 element,如果 element 已经存在,添加失败,O(1)
  • srem key element:将集合 key 中的 element 移除,O(1)
  • scard key:计算集合大小,O(1)
  • sismember key element:判断集合中是否存在 element 元素,O(1)
  • srandmember key count:从集合中随机挑选 count 个元素,元素不会被删除,O(1)
  • spop key:从集合中随机弹出一个元素,元素会被删除,O(1)
  • smembers key:获取集合中所有元素,O(1),谨慎使用,数据量大的话容易阻塞

集合间的API:

  • sdiff key1 key2:差集
  • sinter key1 key2:交集
  • sunion key1 key2:并集
  • sdiff|sinter|sunion store key3:将差集|交集|并集的结果保存到 key3 集合

集合间的使用场景:比如共同关注,共同好友等等

六 有序集合类型(zset)

结构:key-values,values 是一堆 key-value(core-element),core 用于排序,无重复元素,有序
使用场景:排行榜
API:都是以“z”开头

  • zadd key core1 element1 core2 element2:添加元素,core 可以重复,element 不可以重复 O(logN)
  • zrem key element:删除元素,O(1)
  • zscore key element:返回元素的 core,O(1)
  • zincrby key increScore clement:增加或减少元素的分数,O(1)
  • zcard key:返回元素的总个数,O(1)
  • zrange key start end [WITHSCORES]:返回指定索引范围内的升序元素[分值],O(log(n) + m),n 是元素个数,m 是需要获取的元素个数
  • zrangebyscore key minScore maxScore [WITHSCORES]:返回指定范围 score 的升序元素[分值],O(log(n) + m),n 是元素个数,m是需要获取的元素个数
  • zcount key minScore maxScore:返回指定范围 score 的升序元素个数,O(log(n) + m),n 是元素个数,m 是需要获取的元素个数
  • zremrangebyrank|zremrangebyscore key start end:删除指定排名|范围 score 内的升序元素,O(log(n) + m),n 是元素个数,m 是需要获取的元素个数
  • zrevrank:从高到低倒序
  • zrevrange:从高到低取范围数据
  • zrevrangebyscore:给定分数获取从高到低的结果
  • zinterstore:交集
了解一下Redis API和怎么使用它(上) Redis API 是预先定义的命令集合,提供了数据操作接口而无需了解内部机制。本文介绍了 Redis 的主要 API 功能:全局命令(如 keys、exists、expire)、字符串操作(set/get、批量操作、计数)、哈希类型(hset/hget、批量操作、数值计算)。重点讲解了不同数据类型的应用场景:字符串适合计数,哈希适合存储结构化数据(如用户信息)。文章还对比了三种用户信息存储方案的优缺点,并预告了下期将继续介绍其他 Redis 功能。 阅读详情

相关推荐

Windows下Anaconda换清华镜像源最全指南(含常见问题解决)

本文提供了一份详尽的Windows系统下Anaconda配置清华镜像源的完整指南。针对网络下载缓慢的痛点,文章详细对比了命令行添加与直接编辑配置文件两种主流方法,并重点解决了配置过程中常见的文件缺失、安装失败、环境求解缓慢等疑难问题,帮助用户一劳永逸地提升包管理效率。

brandy的博客 337

【Redis 开发与运维】API 的理解和使用

字符串类型(string)、哈希类型(hash)、列表类型(list)、集合类型(set)、有序集合类型(zset)

技术分享,读书笔记,面试宝典,算法积累,应有尽有~ 535

【阿里云大模型高级工程师ACP习题集】2.5 优化RAG应用提升问答准确度(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1105

Redis API详解

前言 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和大名鼎鼎的Memcached缓存服务软件很像,但是redis支持的数据存储类型比memcached更丰富,包括strings(字符串),lists(列表),sets(集合)和sorted sets(有序集合)等。 这些数据类型支持push/pop,add/re...

Jerry的博客 1626

组合导航-IMU-GPS-RTK基本介绍

在实际应用中,需要利用 GPS、北斗等方式产生的信号进行初始化,结合惯导信号和卫星导航信号进行进行卡尔曼滤波处理,得出其最佳推算的定位信息。惯导比起卫星定位具有自身的技术优势,测量方法不依赖外界,短期精度高,能稳 定高频地输出信号。工作原理是通过感知物体在空间的角速度、线速度,进而获取物体的姿态、位置和速度等信息,实现对运动物体姿态和运动轨迹的测量,可以实现全天候全地点地工作。但惯导也有自身的缺陷,由于采用积分算法,定位误差随 载体运行不断累积。

NCU_wander的博客 8014

告别转换超时!手把手教你用Allegro2Altium.bat搞定AD21导入Allegro 17.2文件

本文详细介绍了如何使用Allegro2Altium.bat工具解决AD21导入Allegro 17.2文件时的转换超时问题。通过理解转换机制、准备离线环境、执行完整转换流程及高级技巧,帮助工程师高效完成PCB设计文件转换,提升工作效率。

weixin_30378623的博客 420

Redis 实现接口访问频率限制

Redis 实现接口访问频率限制 来源:SDK.cn 类型:技术文章 发布:2017-06-01 为什么限制访问频率 做服务接口时通常需要用到请求频率限制 Rate limiting,例如限制一个用户1分钟内最多可以范围100次 主要用来保证服务性能和保护数据安全 因为如果不进行限制,服务调用者可以随意访问,想调几次就调几次,会给服务造成很大的压力,降低性能,再比如有的接口需要验证调...

u010597189的博客 2601

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

ACGkaka的博客 6983

Redis入门完整教程:API的理解和使用

Redis提供了5种数据结构,理解每种数据结构的特点对于Redis开发运 维非常重要,同时掌握Redis的单线程命令处理机制,会使数据结构和命令 的选择事半功倍,本章内容如下: ·预备知识:几个简单的全局命令,数据结构和内部编码,单线程命令 处理机制分析。 ·5种数据结构的特点、命令使用、应用场景。 ·键管理、遍历键、数据库管理。2.1 预备 在正式介绍5种数据结构之前,了解一下Redis的一些全局命令、数据结 构和内部编码、单线程命令处理机制是十分有必要的,它们能为后面内容的 学习打下一个好的基础,主要体

Lee达森的博客 393

项目经理面试 5 大高频题 + 实战回答模板,帮你稳拿 offer

项目经理面试5大高频问题及应答技巧 摘要:本文总结了项目经理岗位常见的5个面试问题及回答策略,帮助求职者更有针对性地准备面试。核心问题包括:1)描述负责过的典型项目;2)常用项目管理工具;3)项目遇到的挑战及解决方案;4)风险管理方法;5)项目成功标准。每个问题都从面试官考察重点、回答技巧、实战案例三个维度进行分析,强调要用STAR法则(情境-任务-行动-结果)结构化表达,突出解决问题的能力而非简单罗列经历。特别提醒要量化项目成果(如提前2周上线、节省8%预算等),并注意展示商业思维和团队协作能力。

逸尘谈PM 2105

Error response from daemon: Get “https://index.docker.io/v1/search?q=nginx&n=25“:

在使用docker seach 命令搜索镜像的时候遇到这个错误,docker pull是可以正常下载镜像的,关于这个问题,本文提供解决方案,完全可行。

猿小白的博客 1万+

redis 使用redisson缓存api模板

import org.redisson.api.RLock; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; /** * @Author: Garcia * @CreateDate: 2021/04/10 17:45 * @Description: what it is class? */ public interface Cache.

Qensq的博客 1973

C-08-实战:搭建一个AI客服机器人(接入微信企微)

客服是一人公司最大的时间杀手。本文教你搭建一个AI客服机器人,能自动回答80%的常见问题,只把复杂问题转给人工。含微信公众号和企业微信接入完整代码。

Johnny2004的专栏 87

【深入理解使用Redis (Redis API的理解和使用)】

Redis基础知识,五种数据结构详解,键的管理、遍历、数据库管理。Redis提供五种数据结构,每种数据结构有多种内部实现。纯内存存储、I/O多路复用技术、单线程架构 是Redis高性能三大因素保证每个命令能被快速执行完,否则会出现阻塞的可能合理使用批量操作能提高效率了解每个命令对于不同的数据规模的影响,对于时间复杂度高的,慎用。scan 命令可以解决keys命令带来的阻塞问题。

littleMonster_LC的博客 1261

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

redis 常用api的理解和使用

预备 redis全局命令 查看所有的键: keys * 键总数:dbsize 检查键是否存在:exists key 删除键:del key 键过期:expire key second,其中ttl 命令会返回键的剩余时间 键的数据结构类型:type key 数据结构和内部编码 type命令实际返回的是当前键的数据结构类型,他们分别是string,hash,list,set,zset但是这只是redi...

云飞扬的博客 667

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

二、Redis API的理解和使用

Redis提供了5种数据结构,理解每种数据结构的特点对于Redis开发运维非常重要,同时掌握Redis的单线程命令处理机制,会使数据结构和命令的选择事半功倍。

苏迪的博客 395

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Redis 常用的类型和 API

Redis 常用的五大类型,没有很多理论的知识,都是一些命令,要全部记住也有点难,做好笔记,要用的时候找来用就行了。

zhiqiuqiu2的博客 1410

Redis API的使用和理解

1.通用命令 1 keys * 计算所有健【o(n)】 key he* key he[h-l]* //第三位是h-l 之间 key ph? //只代表三位 2.dbsize 数据库大小(键值对个数)【o(1) 故可以随意使用】 3.判断键的存在性 EXISTS key 存在返回1 否则 0【一般可以随意使用】 4.删除键 DEL key[key...

jcsyl_mshot的博客 2260

Redis 水滴石穿之(二)基本数据类型&常用API

redis学习笔记(二、基本数据类型API) 一、Redis数据类型 官方命令大全网址:http://www.redis.cn/commands.html Redis 中存储数据是通过 key-value 格式存储数据的,其中 value 可以定义五种数据类型: String(字符类型) Hash(散列类型) List(列表类型) Set(集合类型) SortedSet(有序集合类型,简称zset) Redis key 简介 Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形

qq_39169614的博客 1925

redis-API的理解和使用

目录 一.前言 二.预备 2.1全局命令 2.2 数据结构和编码 ​ 2.3单线程架构 三.字符串 3.1 命令 3.2 内部编码 3.3典型使用场景 四.哈希 4.1命令 4.2内部编码 五.列表 5.1命令 5.2内部编码 5.3使用场景 六. 集合 6.1命令 6.2内部编码 6.3使用场景 七.有序集合 7.1命令 7.2内部编码...

王安的博客 857

(二) redis API理解和使用

redis API理解和使用1、全局变量2、数据结构和内部编码2.1、字符串2.2、哈希2.3、列表2.4、集合2.5、有序集合 告诉大家一个联系redis的网站 http://try.redis.io 1、全局变量 redis有五种数据结构,他们是键值对中的值,对于key来说有一些通用的命令。 keys *:获取redis的所有键,强烈不推荐使用在实战中。O(n) dbsize:键的...

oldThreeJJJ的博客 326

【Redis基础】API的理解和使用(一)

dbsize 命令在计算键总数时不会遍历所有键,而是直接获取redis内置的键总数变量,儿keys命令会遍历所有键,当Redis保存大量键时,线上环境会禁止使用keys命令。TTL:查看一个KEY的剩余有效期 大于0的整数为键剩余时间,值为-1没有设置过期时间,值为-2,键不存在。Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网(String类型,也就是字符串类型,是Redis中最简单的存储类型。EXISTS:判断key是否存在,存在返回1,不存在返回0。)可以查看到不同的命令。

my_banana的博客 441

Redis API的理解和使用

预热知识点 1.全局命令 查看所有键   keys * 键总数   dbsize 检查键是否存在  exists key 删除键   del key [key ...] 键过期  expire key secon 键的数据结构类型  type key 2.数据结构和内部编码 type命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、hash(哈希)、lis...

weixin_39576234的博客 416
上一篇: (一)初始redis
下一篇: (三)Redis的其他小功能
Instanceztt
博客等级 码龄7年 8356粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值