• Redis命令及原理学习(一)


    redis介绍

    • redis 是 Remote Dictionary Service 的简称;也是远程字典服务;
      • 节点 通过tcp与redis建立连接交互
      • 请求回应模型
    • redis是一种内存数据库:数据都在内存中。
    • redis是一种kv数据库:
      • 存储方式
      • 操作方式
    • redis是一种数据结构数据库
      • string :以长度作为分隔符,而非’\0’,二进制安全字符串,可存储tcp数据、图片、视频
      • list
      • hash
      • zset
      • set
      • stream
      • hyperloglog
    • 怎么设计key和value?
      • string
      • 单个功能一个key:取有意义的key
      • 相同功能多个key:以冒号作为分割来分组
    • redis是一个中间件,是可以直接启动的
    • redis抽象层次
      • 命令的参数含义
      • 具体返回值
      • redis没有创建数据结构的命令,而是设置或添加时创建数据结构
      • redis有删除kv的命令,但是v中没有元素的时候自动删除
      • 通过组合数据结构实现功能
        • hash + list
        • hash+set
        • hash +zset

    具体使用

    value为hashtable

    那么插入元素操作如下

    hset roleinfo:10001 age 30
    
    • 1

    其中roleinfo:10001为key,age为field,30位value

    查询方法如下

    在这里插入图片描述

    阻塞连接

    基本语法:
    阻塞等待元素出队

    BRPOP key timeout # 超时时间 + 延时队列(为0就是一直阻塞)
    
    • 1

    会话一输入 brpop list 0 ,此时会阻塞住

    再复制一个会话,输入lpush list haha,此时刚刚阻塞住的窗口就会出队成功。

    通过命令组合实现数据结构

    LPUSH + LPOP
    # 或者
    RPUSH + RPOP
    
    • 1
    • 2
    • 3
    队列
    LPUSH + RPOP
    # 或者
    RPUSH + LPOP
    
    • 1
    • 2
    • 3
    阻塞队列
    LPUSH + BRPOP
    # 或者
    RPUSH + BLPOP
    
    • 1
    • 2
    • 3

    杂项

    • 要让windows主机上的redis可视化工具连接ubuntu上的redis-server,需要完成
    1. 开放6379端口

    2. redis.config文件进行如下修改

      # 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
      bind 0.0.0.0
      # 守护进程,修改为yes后即可后台运行
      daemonize yes 
      # 密码,设置后访问Redis必须输入密码
      requirepass 123456
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 遇到(error) NOAUTH Authentication required.则输入
    auth 密码
    
    • 1
    • 柔性数组特点

      在这里插入图片描述

      • 放在结构体内,结构体free,该数组也自动free

      • 不占空间

      • 分配空间方式

        malloc(sizeof(sdshdr16) + 64); //表示buf的大小为64B
        
        • 1
    • key越来越多,效率会降低吗?
      不会,因为hash是O(1)复杂度,代价:扩容缩容渐进式hash

    • 推荐好友是两个人的朋友的差集

  • 相关阅读:
    kotlin基础教程:<5>集合与数组
    教程分享:如何将微信公众号变成淘宝客查券返利机器人自动赚佣金?
    【MMC/SD/SDIO】概述
    MAC M1芯片安装mounty读写移动硬盘中的文件
    解决哈希冲突的方案
    Java IO流:Buffered处理流、对象处理流
    Go语言的100个错误使用场景(一)|代码和项目组织
    Beats Studio Buds 连接 Windows 11 声音输出不显示设备
    【PyTorch深度学习项目实战100例】—— 基于UNet对DRIVE视网膜进行图像分割 | 第29例
    【小月电子】FPGA开发板(XLOGIC_V1)系统学习教程-LESSON3
  • 原文地址:https://blog.csdn.net/qq_42120843/article/details/127805617