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

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

查询方法如下

在这里插入图片描述

阻塞连接

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

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

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

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

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

LPUSH + LPOP
# 或者
RPUSH + RPOP
队列
LPUSH + RPOP
# 或者
RPUSH + LPOP
阻塞队列
LPUSH + BRPOP
# 或者
RPUSH + BLPOP

杂项

  • 要让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
    
  • 遇到(error) NOAUTH Authentication required.则输入
auth 密码
  • 柔性数组特点

    在这里插入图片描述

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

    • 不占空间

    • 分配空间方式

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值