redis五大基础数据类型的操作指令及示例

前言

近期回顾了Redis方面的技术,本文就redis的5大基础数据类型的指令做了一个总结并附上示例


一、Redis是什么?

Redis是一种开源的内存数据库,它被用作缓存、消息代理和键值存储。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,这使得它非常灵活且适用于各种用途。Redis的速度很快,因为它将数据存储在内存中,并且可以持久化到磁盘,确保数据在重启后不会丢失。它也支持多种语言的客户端库,这使得它在各种应用和开发环境中都很流行。

二、基础数据类型使用方法及示例

字符串 (Strings):

  1. 设置键的值:
    SET mykey "Hello"
    
  2. 获取键的值:
    GET mykey
    
  3. 设置多个键值对:
    MSET key1 "value1" key2 "value2"
    
  4. 删除键:
    DEL key1
    
  5. 将键的值递增1:
    INCR counter
    
  6. 在键的值后追加内容:
    APPEND mykey " World"
    
  7. 设置键的过期时间:
    EXPIRE mykey 60
    
  8. 获取键的剩余生存时间:
    TTL mykey
    
  9. 获取键值的子字符串:
    GETRANGE mykey 0 3
    
  10. 获取键值的长度:
    STRLEN mykey
    
  11. 获取多个键的值:
    MGET key1 key2
    
  12. 设置键不存在时才设置键的值:
    SETNX mykey "newvalue"
    
  13. 设置键的值并同时设置过期时间:
    SETEX mykey 60 "value"
    
  14. 设置新值并返回旧值:
    GETSET mykey "newvalue"
    
  15. 将键的值递增指定的步长:
    INCRBY counter 5
    
  16. 将键的值递减1:
    DECR counter
    
  17. 将键的值递减指定的步长:
    DECRBY counter 3
    
  18. 设置位图中指定偏移量的值:
    SETBIT mybitmap 7 1
    
  19. 获取位图中指定偏移量的值:
    GETBIT mybitmap 7
    
  20. 统计位图中值为1的位的数量:
    BITCOUNT mybitmap
    

哈希 (Hashes):

  1. 设置哈希字段的值:
    HSET user:id:001 username Alice
    
  2. 获取哈希字段的值:
    HGET user:id:001 username
    
  3. 设置多个哈希字段的值:
    HMSET user:id:001 username Alice age 30
    
  4. 删除哈希字段:
    HDEL user:id:001 age
    
  5. 获取哈希中所有字段和值:
    HGETALL user:id:001
    
  6. 判断哈希字段是否存在:
    HEXISTS user:id:001 username
    
  7. 获取哈希所有字段:
    HKEYS user:id:001
    
  8. 获取哈希所有值:
    HVALS user:id:001
    
  9. 哈希字段的值递增指定的步长:
    HINCRBY user:id:001 age 5
    
  10. 获取哈希中字段的数量:
    HLEN user:id:001
    
  11. 获取多个哈希字段的值:
    HMGET user:id:001 username age
    
  12. 当字段不存在时设置哈希字段的值:
    HSETNX user:id:001 email "alice@example.com"
    
  13. 获取哈希字段值的长度:
    HSTRLEN user:id:001 username
    
  14. 迭代哈希中的元素:
    HSCAN user:id:001 0 MATCH "user*"
    
  15. 哈希字段的值递增指定的浮点数步长:
    HINCRBYFLOAT user:id:001 balance 10.5
    
  16. 从哈希中随机获取指定数量的字段:
    HRANDFIELD user:id:001 2
    
  17. 获取哈希字段值的长度:
    HSTRLEN user:id:001 username
    
  18. 迭代哈希中的元素:
    HSCAN user:id:001 0 MATCH "user*"
    
  19. 哈希字段的值递增指定的浮点数步长:
    HINCRBYFLOAT user:id:001 balance 10.5
    
  20. 从哈希中随机获取指定数量的字段:
    HRANDFIELD user:id:001 2
    

列表 (Lists):

  1. 将一个值插入到列表的头部:
    LPUSH mylist "world"
    
  2. 将一个值插入到列表的尾部:
    RPUSH mylist "world"
    
  3. 移除并获取列表头部的元素:
    LPOP mylist
    
  4. 移除并获取列表尾部的元素:
    RPOP mylist
    
  5. 获取列表指定范围的元素:
    LRANGE mylist 0 -1
    
  6. 获取列表长度:
    LLEN mylist
    
  7. 通过索引获取列表元素:
    LINDEX mylist 0
    
  8. 在列表中某个元素之前或之后插入值:
    LINSERT mylist BEFORE|AFTER pivot value
    
  9. 移除列表中与给定值相等的元素:
    LREM mylist 0 "value"
    
  10. 从列表的一个尾部或多个尾部列表移除元素并将其添加到另一个列表的头部:
    RPOPLPUSH source destination
    
  11. 对列表进行修剪,保留指定范围内的元素:
    LTRIM mylist 0 2
    
  12. 阻塞式的列表弹出操作:
    BLPOP key [key ...] timeout
    
  13. 阻塞式的列表弹出操作:
    BRPOP key [key ...] timeout
    
  14. 将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端:
    RPOPLPUSH source destination
    
  15. 将列表 source 中的最后一个元素(尾元素)弹出,并插入到列表 destination 开头并返回给客户端:
    BRPOPLPUSH source destination timeout
    
  16. 返回列表中指定区间内的元素,支持负数索引:
    LRANGE mylist 0 -1
    
  17. 将一个或多个值插入到已存在的列表头部:
    LPUSHX mylist "value1" "value2"
    
  18. 将一个或多个值插入到已存在的列表尾部:
    RPUSHX mylist "value1" "value2"
    
  19. 移除并获取列表指定范围内的元素:
    LTRIM mylist 0 2
    
  20. 从列表的一个尾部或多个尾部列表移除元素并将其添加到另一个列表的头部:
    RPOPLPUSH source destination

集合 (Sets):

  1. 将一个或多个成员添加到集合中:
    SADD myset "apple"
    
  2. 从集合中移除一个或多个成员:
    SREM myset "apple"
    
  3. 获取集合中的所有成员:
    SMEMBERS myset
    
  4. 判断成员是否属于集合:
    SISMEMBER myset "apple"
    
  5. 获取集合的成员数量:
    SCARD myset
    
  6. 返回多个集合的并集:
    SUNION key1 key2
    
  7. 返回多个集合的交集:
    SINTER key1 key2
    
  8. 返回多个集合的差集:
    SDIFF key1 key2
    
  9. 移除并返回集合中的一个随机元素:
    SPOP myset
    
  10. 从第一个集合移除成员并添加到另一个集合:
    SMOVE source destination "apple"
    
  11. 返回指定数量的随机元素:
    SRANDMEMBER myset 3
    
  12. 从集合中随机获取一个或多个元素:
    SRANDMEMBER myset 2
    
  13. 移除并返回集合中的一个随机元素:
    SPOP myset
    
  14. 迭代集合中的元素:
    SSCAN myset cursor [MATCH pattern] [COUNT count]
    
  15. 获取多个集合的并集并存储在一个新集合中:
    SUNIONSTORE destination key1 key2
    
  16. 获取多个集合的交集并存储在一个新集合中:
    SINTERSTORE destination key1 key2
    
  17. 获取多个集合的差集并存储在一个新集合中:
    SDIFFSTORE destination key1 key2
    
  18. 检查给定成员是否存在于集合:
    SSCAN myset cursor MATCH "pattern" COUNT count
    
  19. 返回集合的基数(集合中元素的数量):
    SCARD myset
    
  20. 获取指定范围的元素:
    SSCAN myset cursor COUNT count

有序集合 (Sorted Sets):

  1. 将一个或多个成员添加到有序集合,并指定分数:
    ZADD myzset 1 "one"
    
  2. 获取有序集合中指定范围的成员:
    ZRANGE myzset 0 -1 WITHSCORES
    
  3. 获取有序集合中指定分数范围的成员:
    ZRANGEBYSCORE myzset 0 5
    
  4. 返回有序集合中成员的排名:
    ZRANK myzset "one"
    
  5. 获取有序集合中成员的分数:
    ZSCORE myzset "one"
    
  6. 移除有序集合中的一个或多个成员:
    ZREM myzset "one"
    
  7. 返回有序集合的成员数量:
    ZCARD myzset
    
  8. 返回有序集合中指定分数范围内的成员数量:
    ZCOUNT myzset 0 5
    
  9. 对有序集合中指定成员的分数进行增减操作:
    ZINCRBY myzset 5 "one"
    
  10. 返回有序集合中指定范围内的成员和分数:
    ZRANGE myzset 0 -1 WITHSCORES
    
  11. 返回有序集合中指定分数范围内的成员和分数:
    ZRANGEBYSCORE myzset 0 5 WITHSCORES
    
  12. 获取有序集合中指定范围的成员,按分数从高到低排序:
    ZREVRANGE myzset 0 -1 WITHSCORES
    
  13. 获取有序集合中指定分数范围的成员,按分数从高到低排序:
    ZREVRANGEBYSCORE myzset 5 0 WITHSCORES
    
  14. 移除有序集合中指定排名范围内的成员:
    ZREMRANGEBYRANK myzset 0 1
    
  15. 移除有序集合中指定分数范围内的成员:
    ZREMRANGEBYSCORE myzset 0 5
    

总结

这些示例展示了如何使用Redis中的不同命令执行各种操作,包括设置和获取值、操作列表、集合和有序集合,以及如何管理哈希中的字段。

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

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

相关文章

【数据结构】串,数组,广义表 | 笔记整理 | C/C++实现

文章目录 前言一、串1.1、串的定义1.2、案例引入1.3、串的类型定义和存储结构1.4、串的模式匹配算法1.4.1、BF算法1.4.2、KMP算法 二、数组2.1、数组的定义2.2、数组的抽象数据类型定义2.3、数组的顺序存储2.4、特殊矩阵的压缩存储 三、广义表四、病毒案例 前言 参考视频&…

Spring Security实现详解

一、WebSecurityConfigurerAdapter 总配置类: 1、介绍:配置类 2、主要方法: (1)configure(HttpSecurity http) protected void configure(HttpSecurity http) throws Exception {this.logge…

【C++】wxWidgets库实现窗体程序

一、安装wxWidgets库 在Debian系统上使用wxWidgets库来创建一个基本的窗体程序,首先需要确保已经安装了wxWidgets相关的库和开发工具。下面是安装wxWidgets的步骤: 打开终端,使用下述命令安装wxWidgets库及其开发文件: sudo ap…

etcd官方docker镜像及dockerfile问题处理

解决下我之前etcd使用docker镜像启动的坑 1、问题镜像docker-file: 这个dockerfile看着看不出来问题,但如果有人真的执行我之前两篇文章的文件,就会有问题,什么问题呢,无法连接到etcd,由于我是刚装上dock…

11k+star 开源笔记应用真香 centos部署教程

leanote binary installation on Mac and Linux (En) life edited this page on Jul 21, 2017 10 revisions Pages 26 Home How to develop leanote 如何开发leanote How to install leanote on Ubuntu? How to Upgrade Leanote Install Mongodb leanote api leanote …

js页面输出的方式

JavaScript 可以通过以下方式在页面中输出内容: 使用 document.write() 方法,将文本字符串直接写入 HTML 文档中。 document.write("Hello World!");使用 innerHTML 属性,向元素的内部插入 HTML 代码。 document.getElementById(&…

开源监控服务一瞥:Prometheus、Grafana、Zabbix、Nagios、Icinga和Open-Falcon

前言 随着信息技术的发展,监控服务在维护系统稳定性和性能方面变得越来越重要。本文将比较一些流行的开源监控服务,以帮助你选择适合你需求的解决方案。 监控服务对比 监控服务特点优势不足性能扩展性安全性Prometheus- 多维度数据模型- 监控容器化环…

MySQL之导入、导出远程备份

一、Navicat工具导入、导出 1.1 导入 第一步: 右键,点击运行SQL文件 第二步: 选择要运行的SQL,点击开始 第三步: 关闭即可 1.2 导出 第一步: 右键选择,导出向导 第二步: 选择SQL脚…

1.3MATLAB变量及其操作

变量 变量是内存单元的一个抽象,在MATLAB中,变量以字母开头,后接数字下划线构成,MATLAB中变量名最多占据 63 个字符。变量区分大小写标准函数及命令一般使用小写字母 赋值语句 变量 表达式(;)表达式(;)总结:加分号&…

C++ 实现游戏(例如MC)键位显示

效果: 是不是有那味儿了? 显示AWSD,空格,Shift和左右键的按键情况以及左右键的CPS。 彩虹色轮廓,黑白填充。具有任务栏图标,可以随时关闭字体是Minecraft AE Pixel,如果你没有装(大…

约瑟夫环问题解决

链表 struct List {int data;struct List* next; }创建链表 单链表 实现 struct List* listCreate() {int data;struct List* head NULL;struct List* pre NULL;struct List* current NULL;while(scanf("%d",&data) && data ! -1){current (stru…

使用numpy处理图片——灰阶影像

大纲 载入图像灰阶处理lightnessaverageluminosity 灰阶(Gray scale)影像是每个像素只有一个采样颜色的图像。 载入图像 import numpy as np import PIL.Image as Imageimg Image.open(lena.png) data np.array(img)灰阶处理 我们有三种方法来生成这…

Linux中常使用的命令之ls、cd、pwd、mkdir、rmdir

ls: 列出目录 cd:切换目录 pwd:显示目前的目录 mkdir:创建一个新的目录 -m :配置文件的权限-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来! rmdir:删除一个空的目录 注意这…

基本数据结构 | 并查集

基本介绍 并查集主要实现两个操作: 合并两个集合查询某个元素的祖宗节点 并查集的两个优化: 路径压缩: O ( l o g n ) O(logn) O(logn)按秩合并: O ( l o g n ) O(logn) O(logn),代码比较复杂,一般不单…

基于springboot时间管理系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括时间管理系统的网络应用,在外国时间管理系统已经是很普遍的方式,不过国内的管理系统可能还处于起步阶段。时间管理系统具有时间管理功能的选择。时间管…

基于强化学习的航线规划算法

基于Q-learning的无人机三维路径规划(含完整C代码)_q-learning 无人机路径规划代码-CSDN博客 基于Q-Learing的路径规划MATLAB仿真系统_强化学习MATLAB资源-CSDN文库

Vue-路由-配置

1. VueRouter 的 使用 (5 2) 参考官网 5个基础步骤 (固定) 下载 VueRouter 模块到当前工程,这里指定版本:3.6.5 yarn add vue-router3.6.5引入 vue-router import VueRouter from vue-router安装注册 Vue.use(VueRouter) // VueRouter插件初始化创…

Unity Shader 属性的定义

Unity Shader 属性的定义 什么是材质球 人的衣服 什么是shader 决定材质跟灯光的作用 Property 若是把shader看作class,那么Property就可以看成成员变量 属性定义的通用格式 Properites{ Property[Property…] } ep:定义一个int: name("dis…

ODBC 在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配

常规办法就是64位或32位匹配,如果解决不了,往下看。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓解决方案↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 解压AccessDatabaseEngine_X64.exe&#xf…

为什么选择Go语言编写网络应用程序

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 作为一名后端开发者,你一定对选择合适的编程语言来编写网络应用程序非常重视。在众多的编程语言中,Go语言…