• Redis 初识


           关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而 nosql 数据库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql 数据库要优于关系型数据库,从安全性上而言关系型数据库要优于 nosql 数据库,所以在实际开发中一个项目中 nosql 和关系型数据库会一起使用,达到性能和安全性的双保证。

           学过数据结构的肯定对 Redis 的存储形式不会觉得陌生。

    Redis中的数据采用的是 key-value 的形式进行存储的,其中的 value 支持五种类型,字符串(String)字符串列表(Lists)字符串集合(Sets)有序字符串集合(Sorted Sets)哈希类型(Hashs)

    安装启动 Redis,将下载好的 zip 解压到准备好的目录里面,cmd运行里面的 redis-server.exe 文件,如下图:

    image

    也可像安装 jdk 一样,将 Redis 的安装目录放进 path 里面,这样启动方便点。

    image

    然后就可以任意目录下面运行 redis-server.exe,redis-cli.exe 等命令了。

    下面是五种类型的操作命令,加粗斜体单词均为命令操作,大写字母实在写不惯。

    操作String类型数据的操作如下:

    命令

    解释

    set keyName value

    存储 key-value 对,存在即覆盖
    get keyName

    获取 keyName 对应的 value

    getset keyName newValue

    获取 keyName 对应的原始 value,然后赋值为 newValue 值,

    不存在对应keyName则创建并赋值为 newValue

    incr keyName

    keyName 对应的 value 原子性自增 1,

    如果 value 不能转换为整型,就会报错

    decr keyName

    keyName 对应的 value 原子性自减 1,

    如果 value 不能转换为整型,就会报错

    incrby keyName increment

    keyName 对应的 value 原子性自增 increment 个 1,

    如果 value 不能转换为整型,就会报错

    decrby keyName increment

    keyName 对应的 value 原子性自减 increment 个 1,

    如果 value 不能转换为整型,就会报错

    append keyName newValue keyName 对应的原始value 后追加 newValue,
    如果不存在 keyName,则创建一个keyName-newValue

    表格中提到了原子性自增,这是什么意思呢?也就是下面这样的情况永远都不会发生:

    【numberKey 对应的 value 为 5,客户端 a发出了 incr numberKey 命令的同时,客户端 b 也发出了 incr numberKey 的命令,服务器同时收到两个命令,得到的结果为 6】

    得到的结果将会是为 7 ,这就是原子性。

    操作 Lists 类型的操作如下:

    命令 解释
    lpush keyName value1 [valuen] 在 keyName 对应的 list 的头部插入元素【 也就是 left 左边 】
    rpush keyName value1 [valuen] 在 keyName 对应的 list 的尾部插入元素【 也就是 right 右边 】
    lrange keyName startIndex endIndex 获取 keyName 对应的链表指定下标对应的元素集合,
    如果 startIndex 为负数,就倒着开始,
    如果 endIndex 为负数,就倒着结束。

    lpushx keyName value

    当且仅当 keyName 存在时,在链表头部插入 value

    rpushx keyName value

    当且仅当 keyName 存在时,在链表尾部插入 value

    lpop keyName

    弹出 keyName 对应链表的头元素

    rpop keyName

    弹出 keyName 对应链表的尾元素

    rpoplpush keyName

     

    llen keyName

    获取 keyName 对应链表的长度,也就是元素个数

    lset keyName index newValue

    设置 keyName 对应链表的 index 位置的元素

    lrem keyName count value

    删除 count 个值为 value 的元素,
    【 如果 count 的值大于0,则从链表的头部开始遍历出最多 count 个值为 value的元素,
    并删除这些元素;
    如果 count 的值小于0,则从链表尾部开始遍历出最多 count 个值为 value的元素,
    并删除这些元素】
  • 相关阅读:
    心血来潮学python
    lua中的table、stack和registery
    wrapper for lua
    FT232RL变砖之后
    12.04 redmine
    Webpack 概念
    如何学习 Webpack
    React基础篇
    Intellij实用技巧
    一行代码搞定图片缩放、旋转、加水印
  • 原文地址:https://www.cnblogs.com/daimajun/p/7084526.html
Copyright © 2020-2023  润新知