redis 常用api的理解和使用

预备redis全局命令查看所有的键: keys *键总数:dbsize检查键是否存在:exists key删除键:del key键过期:expire key second,其中ttl 命令会返回键的剩余时间键的数据结构类型:type key数据结构和内部编码type命令实际返回的是当前键的数据结构类型,他们分别是string,hash,list,set,zset但是这只是redi...
摘要由CSDN通过智能技术生成

预备

redis全局命令

查看所有的键: keys *
键总数:dbsize
检查键是否存在:exists key
删除键:del key
键过期:expire key second,其中ttl 命令会返回键的剩余时间
键的数据结构类型:type key

数据结构和内部编码

type命令实际返回的是当前键的数据结构类型,他们分别是string,hash,list,set,zset但是这只是redis对外的数据结构.
实际上每种数据结构都有着自己的底层内部编码实现,而且是多种实现,这样redis会在合适的场景下选择合适的内部编码.

redis这样的实现有两种好处,

  • 第一:可以改进内部编码,而对外的数据结构和命令没有影响,这样一旦开发出更加优秀的内部编码,无需改动外部数据结构和命令
  • 多种内部编码实现可以在不同场景下发挥各自的优势

单线程架构

redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务
redis客户端和服务端的调用会经历如下三个阶段:发送命令,执行命令,返回命令在这里插入图片描述因为redis是单线程来处理命令的,所以一条命令从客户端到达服务端不会立即被执行,所有命令都会进入到一个队列中,然后逐个被执行,所以客户端命令执行的顺序是不确定的,但是可以确定不会有两条命令同时被执行

为什么单线程访问还能够这么快:

  • 纯内存访问
  • 非阻塞IO
  • 单线程避免了线程切换和竞态产生的开销
    单线程机制会带来很多的好处,但是对于每个命令的执行时间是有要求的,如果某个命令的执行时间过长,会造成其他命令的阻塞,所有redis是面向快速执行的场景设计的数据库

字符串

字符串类型是redis最基础的数据结构,首先键都是字符串类型的,而且其他几种数据结构都是在字符串类型的基础上构建的,所以字符串类型能够为其他四种数据结构的学习奠定基础,字符串类型的值可以是字符串,数字甚至是二进制文件,但是值最大不能超过512兆

常用命令

  • 设置值:
    set key value [ex|px] [nx|xx]
    ex 为键设置秒级过期时间
    px 为键设置毫秒级过期时间
    nx 键必须不存在才能够设置成功,用于添加
    xx 键必须存在,才能够设置成功,用于更新
    setnx用于实现分布式锁:多个客户端同时执行setnx只有一个能够实现成功
  • 获取值:
    get key
  • 批量设置值
    mset key value [key value … ]
  • 批量获取值
    mget key [key …]
    如果有些键不存在,那么他的值为空,结果是按照传入键的顺序返回
    批量操作可以有效的提高开发效率,加入没有mget这样的命令,要执行n次get需要消耗大量的网络和硬件开销
    学会使用批量操作,有助于提高业务执行效率,但是注意的是每次的批量操作所发送的命令数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值