码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 非关系型数据库技术课程 第二周作业(Redis中字符串和列表数据类型练习)


    文章目录

    • (1)字符串型数据的常用操作:
        • set :添加键值对
        • get :查询对应键值
        • append :将给定的 追加到原值的末尾
        • strlen :获得值的长度
        • setnx :只有在 key 不存在时才设置 key 的值
        • incr :将 key 中储存的数字值增1 注意:只能对数字值操作,如果为空,新增值为1
        • decr :将 key 中储存的数字值减1。注意:只能对数字值操作,如果为空,新增值为-1
        • incrby / decrby <步长>:将 key 中储存的数字值增减。自定义步长。
        • mset ..... :同时设置一个或多个 key-value对
        • mget ..... :同时获取一个或多个 value
        • msetnx ..... :当且仅当所有给定 key 都不存在时,同时设置一个或多个 key-value 对。(原子性,有其中一个失败则都失败)
        • getrange <起始位置> <结束位置>:获得key对应的[起始,结束]区间范围内的值(左闭右闭区间)
        • setrange <起始位置> :用 覆写所储存的字符串值,从<起始位置>开始(索引从0开始)。
        • setex <过期时间> :设置键值的同时,设置过期时间,单位秒。
        • getset :以新换旧,设置了新值同时获得旧值。
    • (2)列表型数据的常用操作:
        • lpush/rpush .... :从左边/右边插入一个或多个值。
        • lpop/rpop :从左边/右边吐出一个值。值在键在,值光键亡。
        • rpoplpush :从列表右边吐出一个值,插到列表左边。
        • lrange : 按照索引下标获得元素(从左到右) (索引中0代表左边数第一个,-1代表右边数第一个)
        • lrange 0 -1 : 0左边第一个,-1右边第一个,(0 -1表示获取所有)
        • lindex :按照索引下标获得元素(从左到右)
        • llen : 获得列表长度
        • linsert before/after :在的前面/后面插入插入值
        • lrem :从左边删除n个value(从左到右)
        • lset :将列表key下标为index的值替换成value

    实验内容及要求:
    自行设计字符型和列表型数据,并针对这些数据执行常用操作;

    (1)字符串型数据的常用操作:

    命令及操作结果截图:

    set :添加键值对

    设置键值对:k1:v1
    在这里插入图片描述
    set操作拓展:
    当键值对存在时,对该键进行set操作会覆盖该键原先的值
    在这里插入图片描述
    关于set命令的一些可选参数:
    在这里插入图片描述
    *NX:当数据库中key不存在时,可以将key-value添加数据库
    *XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
    *EX:key的超时秒数
    *PX:key的超时毫秒数,与EX互斥

    下面是对以上参数的相关实际操作:

    补充:ttl 命令用于查看还有多少秒过期,-1表示永不过期,-2表示已过期

    设置键值对k2:v2且设置其超时时间为15秒:
    使用“EX”设置其超时时间为15秒
    在这里插入图片描述
    使用“PX”设置其超时时间为15秒
    在这里插入图片描述
    当数据库中k3不存在时,将键值对k3:v3添加数据库:
    在这里插入图片描述

    解释:第二次使用set k3 v3 NX命令时,数据库中已有k3,而NX是当数据库中key不存在时才能将其添加进数据库,所以不能成功set。

    当数据库中k3存在时,将键值对k3:v33添加数据库:
    在这里插入图片描述

    解释:将键值对k3:v33添加数据库可以直接使用“set k3
    v33”命令,数据库中如果有k3键,则将其覆盖,若无k3键,则往数据库中新增键值对k3:v33;而使用“ set k3 v33
    XX”命令的话,当数据库有k3键时,会执行覆盖操作,而当数据库中无k3键时,该操作不成功,返回(nil)

    get :查询对应键值

    查询数据库中已有的键对应的值:

    补充:keys *查看当前库所有key

    在这里插入图片描述

    append :将给定的 追加到原值的末尾

    将给定的 追加到原值的末尾:
    在这里插入图片描述

    strlen :获得值的长度

    查看当前数据库中所有键对应的值的长度:
    在这里插入图片描述

    setnx :只有在 key 不存在时才设置 key 的值

    添加键值对k4:v4
    在这里插入图片描述

    incr :将 key 中储存的数字值增1 注意:只能对数字值操作,如果为空,新增值为1

    添加键值对k5:500,并使其增1
    在这里插入图片描述
    不能对非数字值操作:
    在这里插入图片描述
    如果为空,新增值为1:
    在这里插入图片描述

    decr :将 key 中储存的数字值减1。注意:只能对数字值操作,如果为空,新增值为-1

    使k5减1:

    在这里插入图片描述
    不能对非数字值操作:
    在这里插入图片描述
    如果为空,新增值为-1
    在这里插入图片描述

    incrby / decrby <步长>:将 key 中储存的数字值增减。自定义步长。

    将k5键对应的值加10:
    在这里插入图片描述
    将k5键对应的值减10:
    在这里插入图片描述

    mset … :同时设置一个或多个 key-value对

    设置多个键值对:k6:v6,k7:v7,k8:v8:
    在这里插入图片描述

    mget … :同时获取一个或多个 value

    同时获取键k1,k2,k3,k4,k5的值:
    在这里插入图片描述

    msetnx … :当且仅当所有给定 key 都不存在时,同时设置一个或多个 key-value 对。(原子性,有其中一个失败则都失败)

    设置键值对k9:v9,k10:v10:
    在这里插入图片描述
    当k10存在时,设置键值对k10:v10,k11,v11(k10已存在,因此设置k10:v10会失败,同时设置k11:v11也会失败(有其中一个失败则都失败))
    在这里插入图片描述

    getrange <起始位置> <结束位置>:获得key对应的[起始,结束]区间范围内的值(左闭右闭区间)

    设置键s1对应值“My homework”,并取区间范围[0,3],[5,6]的值:

    在这里插入图片描述

    setrange <起始位置> :用 覆写所储存的字符串值,从<起始位置>开始(索引从0开始)。

    在s1对应的值的第五个字符(索引值为4)开始使用test覆写原来的值
    在这里插入图片描述

    setex <过期时间> :设置键值的同时,设置过期时间,单位秒。

    设置键值对t1:v11且设置其过期时间为20秒:
    在这里插入图片描述

    getset :以新换旧,设置了新值同时获得旧值。

    获取s1的值同时将s1的值设置为”homework”:
    在这里插入图片描述
    为了更好操作,先清空一下当前库中的键值对

    flushdb:清空当前库

    在这里插入图片描述

    补充:
    String的数据结构为简单动态字符串(Simple Dynamic
    String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配.
    在这里插入图片描述
    如图中所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。
    关于列表(单键多值):
    要注意插入的顺序!
    Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
    它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
    在这里插入图片描述

    (2)列表型数据的常用操作:

    命令及操作结果截图

    lpush/rpush … :从左边/右边插入一个或多个值。

    创建一个键值为k1的列表,且从左边插入多个值:v1,v2,v3

    在这里插入图片描述
    创建一个键值为k2的列表,且从右边插入多个值:v11,v22,v33
    在这里插入图片描述

    在键值为k2的列表中,从右边插入多个值:v44,v55
    在这里插入图片描述

    lpop/rpop :从左边/右边吐出一个值。值在键在,值光键亡。

    在键值为k2的列表中,从左边吐出一个值:
    在这里插入图片描述
    在键值为k2的列表中,从右边吐出一个值:
    在这里插入图片描述

    rpoplpush :从列表右边吐出一个值,插到列表左边。

    从k1列表右边吐出一个值,插到k2列表左边:
    在这里插入图片描述

    lrange : 按照索引下标获得元素(从左到右) (索引中0代表左边数第一个,-1代表右边数第一个)

    获得列表k2中区间[0,2]和[-2,-1]间的元素:
    在这里插入图片描述

    lrange 0 -1 : 0左边第一个,-1右边第一个,(0 -1表示获取所有)

    获得列表k1中的所有元素:
    在这里插入图片描述

    lindex :按照索引下标获得元素(从左到右)

    获得列表k2索引为2 的元素:
    在这里插入图片描述

    llen : 获得列表长度

    获得k1,k2列表的长度
    在这里插入图片描述

    linsert before/after :在的前面/后面插入插入值

    在k2列表中值v22,v33前面插入值hello:
    在这里插入图片描述
    在k2列表中值v22,v33后面插入值world
    在这里插入图片描述

    lrem :从左边删除n个value(从左到右)

    在列表k2中删除前两个hello(从左边开始数):
    在这里插入图片描述

    lset :将列表key下标为index的值替换成value

    将列表k2下标为2的值替换为hello:
    在这里插入图片描述

  • 相关阅读:
    2023秋招上岸必备软件测试面试题
    Pandas 全系列教程分享
    单片机对比:选择最适合你的单片机
    【Spring Boot 源码学习】OnWebApplicationCondition 详解
    java8 新特性 -Optional的常见用法
    【机器学习算法】集成学习-1 强学习器的融合学习
    创建.gitignore文件并使用
    10.7、华为数通HCIP-DataCom H12-821单选题:121-140
    CAS:190598-55-1_Biotin sulfo-N-hydroxysuccinimide ester生物素化试
    下班后根本联系不上,这样的员工可以辞退吗
  • 原文地址:https://blog.csdn.net/GCTTTTTT/article/details/126795434
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号