• Redis的介绍与使用


    Redis简介

    • Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构: 字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。

    NoSql数据库:not only sql,除关系型数据库之外的所有非关系型数据库

    • Redis将所有的数据都存放在内存中,所以它的读写性能十分惊人。 同时,Redis还可以将内存中的数据以快照或日志的形式保存到硬盘上,以保证数据的安全性。

    • 快照形式:即RDB形式,直接将内存中数据原原本本传硬盘上

      • 优点:数据体积小,恢复数据到内存很快

      • 缺点:将内存数据一下子存到硬盘上很耗时,存储时可能造成阻塞,对其他业务有影响

      • 不适合实时去做,适合几个小时做一次数据备份

    • 日志形式:AOF形式,每执行一个redis命令,就以日志的形式存储一次

      • 优点:实时、快速

      • 缺点:以追加的形式存储,体积大占空间。恢复速度慢(恢复时会将硬盘中命令全部跑一次)

    • Redis典型的应用场景包括:

      • 缓存:频繁访问的数据,从内存上取比硬盘上快

      • 排行榜:如热门帖子等,访问是很频繁的,进行缓存效率高

      • 计数器:每访问一次帖子浏览量加一,数据存硬盘效率太低

      • 社交网络:点赞关注等。放内存更快访问;且关系型数据库里不方便存(就一个数据还要建一张表),以键值对形式存到内存中

      • 消息队列:不是专门做消息队列的工具,项目对消息队列要求不是特别高时,可以用redis

      • … …

    安装Redis

    https://redis.io/ :下载Linux系统的redis安装包,查询redis的数据命令等

    https://github.com/microsoftarchive/redis :微软做的windows系统的redis安装包

    .msi 安装程序 . zip 压缩包

    安装时,仅需改存储路径

    将redis的安装路径设置为系统变量

    Redis常用命令

    官网:https://redis.io/

    全局命令

    cmd中启动redis: redis-cli

    image-20240220155834716

    redis内置16个库,无名字,用0-15的数字索引进行区分

    切换库: select 库索引

    **刷新当前库:**flushdb 刷新后清除库中数据

    image-20240220160318638

    **查询当前库里的key:**keys * 所有key

    ​ keys test* 以test开头的key

    image-20240220171008973

    **查看key的值类型:**type key

    image-20240220171126217

    **查看key是否存在(1真0假):**exists key [key …]

    **删除key:**del key [key …]

    image-20240220171328921

    **设置key过期时间:**expire key seconds

    seconds为过期秒数,过了这个秒数,会自动删除key

    image-20240220171602678

    String类型数据

    **key命名规则:**多个单词之间用 “ : ” 分隔,如 test:count

    添加数据: set key名 value值

    **获取数据:**get key名 value值

    image-20240220160631638

    **数据自增1:**incr key

    数据自减1: decr key

    image-20240220160803157

    Hash哈希类型数据

    redis中数据以key-value形式存储,因此hash类型数据,key名相当于hash表名,fields相当于表中键值对的键名

    **存数据:**hset key名 fields value

    **取数据:**gset key名 fields

    image-20240220162033913

    List列表类型数据

    很灵活,若看作横向容器,支持从左边()往里装/取数据,也支持从右边往里装/取数据。

    • 左进右出:栈
    • 左进左出:队列

    命令中,l 代表left,r 代表right

    从左边存数据:lpush key值 value [value…]

    越先放入索引越大,越后放入索引越小

    如按101,102,103的顺序朝list中放数据,则list中数据从左到右为 103,102,101,索引从左到右为0,1,2

    **查看list长度:**llen key

    **查看list中指定索引下的值:**lindex key index

    image-20240220163408214

    **查看某个索引范围内的值:**lrange key start stop

    ​ 0表示第一个数据,-1表示最后一个数据

    image-20240220164342458

    **从右边取数据:**rpop key

    image-20240220164705602

    Set集合类型数据

    列表有序,数据可重复

    集合无序,数据不可重复

    **存数据:**sadd key member [member…]

    s代表set

    **查看集合中元素个数:**scard key

    从集合中随机的弹出一个元素:spop key [count]

    **该命令可用于抽奖:**set中存放不同用户的id,每个id只有一个,每次随机弹出一个id作为中奖用户

    image-20240220165329220

    **查看集合中元素:**smember key

    image-20240220165646919

    SortedSet有序集合类型数据

    给每一个存的值,附加一个分数,按分数排序

    **存数据:**zadd key score member [score member …]

    **查看集合中元素个数:**zcard key

    **查询元素对应的分数:**zscore key member

    **查询元素排名(默认由小到大):**zrank key member

    **取某个排名范围内的数据:**zrange key start stop

    image-20240220170637353

    一些选择题

    4.2【瑞客论 坛 www.ruike1.com】

    B

    4.3【瑞客论 坛 www.ruike1.com】

    C

    4.4【瑞客论 坛 www.ruike1.com】

    A
    rt stop

    [外链图片转存中…(img-0CQye3dU-1709434100818)]

    一些选择题

    [外链图片转存中…(img-SqV0qa5c-1709434100819)]

    B

    [外链图片转存中…(img-iWVOX7MR-1709434100819)]

    C

    [外链图片转存中…(img-rTkfsOqd-1709434100820)]

    A

  • 相关阅读:
    HBuilderX在IOS上进行真机调试步骤
    Salesforce LWC学习(四十六) record-picker组件浅谈
    10.1 File类
    Threejs实现一个园区
    为什么 OpenAI 团队采用 Python 开发他们的后端服务?
    web3j solidity 转java
    Docker部署Zabbix
    QT not in executable format:file truncated
    【Linux】线程详解完结篇——信号量 + 线程池 + 单例模式 + 读写锁
    [项目管理] IT软件交付项目流程阶段
  • 原文地址:https://blog.csdn.net/ShirleyZ1007/article/details/136427903