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

学习node.js 十 redis的基本语法

redis

Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,它提供了一个高效的键值存储解决方案,并支持多种数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)等。它被广泛应用于缓存、消息队列、实时统计等场景。

以下是一些关键特性和用途介绍:

  1. 内存存储:Redis主要将数据存储在内存中,因此具有快速的读写性能。它可以持久化数据到磁盘,以便在重新启动后恢复数据。
  2. 多种数据结构:Redis不仅仅是一个简单的键值存储,它支持多种数据结构,如字符串、哈希、列表、集合和有序集合。这些数据结构使得Redis能够更灵活地存储和操作数据。
  3. 发布/订阅:Redis支持发布/订阅模式,允许多个客户端订阅一个或多个频道,以接收实时发布的消息。这使得Redis可以用作实时消息系统。
  4. 事务支持:Redis支持事务,可以将多个命令打包成一个原子操作执行,确保这些命令要么全部执行成功,要么全部失败。
  5. 持久化:Redis提供了两种持久化数据的方式:RDB(Redis Database)和AOF(Append Only File)。RDB是将数据以快照形式保存到磁盘,而AOF是将每个写操作追加到文件中。这些机制可以确保数据在意外宕机或重启后的持久性。
  6. 高可用性:Redis支持主从复制和Sentinel哨兵机制。通过主从复制,可以创建多个Redis实例的副本,以提高读取性能和容错能力。Sentinel是一个用于监控和自动故障转移的系统,它可以在主节点宕机时自动将从节点提升为主节点。
  7. 缓存:由于Redis具有快速的读写性能和灵活的数据结构,它被广泛用作缓存层。它可以将常用的数据存储在内存中,以加快数据访问速度,减轻后端数据库的负载。
  8. 实时统计:Redis的计数器和有序集合等数据结构使其非常适合实时统计场景。它可以存储和更新计数器,并对有序集合进行排名和范围查询,用于统计和排行榜功能

redis的基本使用

1.字符串的操作

SET key value [NX|XX] [EX seconds] [PX milliseconds] [GET]

介绍:

  • key:要设置的键名。
  • value:要设置的值。
  • NX:可选参数,表示只在键不存在时才设置值。
  • XX:可选参数,表示只在键已经存在时才设置值。
  • EX seconds:可选参数,将键的过期时间设置为指定的秒数。
  • PX milliseconds:可选参数,将键的过期时间设置为指定的毫秒数。
  • GET:可选参数,返回键的旧值。

运用:

  1. 设置键名为 “name”值为“jjs"

    set name "jjs"
    
  2. 设置键名为 “name” 的值为 “John”:

    set name "John" XX
    
  3. 设置键名为 “counter” 的值为 10,并设置过期时间为 60 秒:

     set counter 100 EX 60
    
  4. 只在键名为 “status” 不存在时,设置其值为 “active”:

    set status "active" NX
    
  5. 只在键名为 “score” 已经存在时,将其值设置为 5:

     set score 5 XX
    
  6. 设置键名为 “name” 的值为 “Hello”,并返回旧的值:

    set name "hello" GET
    
  7. 删除键名为 “name” 的键:

    DEL name
    
  8. 批量删除多个键名:

    del a b c
    
  9. 删除不存在的键名,不会报错,返回删除的键数量为 0:

     del not_exist_key
    

执行效果图:

在这里插入图片描述

2. 集合操作

集合(Set)是一种无序且不重复的数据结构,用于存储一组独立的元素。集合中的元素之间没有明确的顺序关系,每个元素在集合中只能出现一次。

运用:

  1. 添加成员到集合:

     sadd mumber "apple"
    
  2. 获取集合中的所有成员:

    smembers mumber
    
  3. 检查成员是否存在于集合中:

     sismember mumber "bule"
    
  4. 从集合中移除成员:

    srem mumber "bule"
    
  5. 获取集合中的成员数量:

    scard mumber
    
  6. 获取随机成员:

    srandmember mumber
    
  7. 求多个集合的并集:

    sunion color mumber
    
  8. 求多个集合的交集:

     sinter color mumber
    
  9. 求多个集合的差集:

    sdiff color mumber
    

执行效果:

在这里插入图片描述

3. 哈希表操作

哈希表(Hash)是一种数据结构,也称为字典、关联数组或映射,用于存储键值对集合。在哈希表中,键和值都是存储的数据项,并通过哈希函数将键映射到特定的存储位置,从而实现快速的数据访问和查找。

运用:

  1. 设置哈希表中的字段值:

    hset obj name "jjs"
    
  2. 获取哈希表中的字段值:

    hget obj name
    
  3. 一次设置多个字段的值:

    hmset obj name "jtt" age 15 email 12412@qq.com
    
  4. 获取多个字段的值:

    hmget obj name age email
    
  5. 获取哈希表中所有字段和值:

     hgetall obj
    
  6. 删除哈希表中的字段

    hdel obj email
    
  7. 检查哈希表中是否存在指定字段:

    hexists obj name
    
  8. 获取哈希表中所有的字段:

     hkeys obj
  9. 获取哈希表中所有的值:

    hvals obj
  10. 获取哈希表中字段的数量:

    hlen obj
    

运行效果:

在这里插入图片描述

4. 列表操作

列表(List)是一种有序、可变且可重复的数据结构。在许多编程语言和数据存储系统中,列表是一种常见的数据结构类型,用于存储一组元素

运用:

  1. 添加元素:

    LPUSH key element1 element2 …:将一个或多个元素从列表的左侧插入,即将元素依次插入列表的头部。如果列表不存在,则在执行操作前会自动创建一个新的列表。
    RPUSH key element1 element2 …:将一个或多个元素从列表的右侧插入,即将元素依次插入列表的尾部。如果列表不存在,则在执行操作前会自动创建一个新的列表。

     lpush list 1 2 3
    
  2. 获取元素

    lindex list 4 // 获取列表中指定索引位置的元素
    lrange list 0 -1 // 获取列表中指定范围内的元素
    
  3. 修改元素:

    LSET key index newValue  // 修改列表中指定索引位置的元素的值
    
  4. 删除元素

    LPOP key  // 从列表的左侧移除并返回第一个元素
    RPOP key  // 从列表的右侧移除并返回最后一个元素
    LREM key count value  // 从列表中删除指定数量的指定值元素
    
  5. 获取列表长度

    llen key
    

执行效果:

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Dashboard Interface 应用
  • LeetCode 3146.两个字符串的排列差:小数据,我选择暴力模拟
  • 02- javascript 高阶-构造函数(知识点)呀
  • PagosController : ControllerBase
  • Oracle(84)什么是SQL调优顾问(SQL Tuning Advisor)?
  • 计算机网络基础 - 应用层(1)
  • 【JVM】亿级流量调优(二)
  • Linux 下命令行参数和环境变量
  • vue3+ts+Go使用百度地图路书实现历史轨迹回放、轨迹回放进度、聚合点、自定义弹框和实时监控视频、多路视频轮巡播放
  • 【大数据算法】一文掌握大数据算法之:排序链表搜索的亚线性算法。
  • 服务容错(Service Fault Tolerance)
  • Git 版本控制操作
  • 鲲鹏服务器安装Kafka
  • C#二叉搜索树算法
  • 数据库查询优化:提高数据提取效率
  • 【技术性】Search知识
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • C# 免费离线人脸识别 2.0 Demo
  • es6
  • Java基本数据类型之Number
  • js面向对象
  • k8s如何管理Pod
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 规范化安全开发 KOA 手脚架
  • 后端_MYSQL
  • 聊聊flink的BlobWriter
  • 区块链分支循环
  • 实现简单的正则表达式引擎
  • 实战|智能家居行业移动应用性能分析
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 原生Ajax
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • mysql面试题分组并合并列
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 计算机视觉入门
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (09)Hive——CTE 公共表达式
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计ssm电影分享网站
  • (六)DockerCompose安装与配置
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四)JPA - JQPL 实现增删改查
  • (一) 初入MySQL 【认识和部署】
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转) 深度模型优化性能 调参