Redis速成

数据类型

String(字符串)

  • redis 的 string 可以包含任何数据,比如jpg图片或者序列化的对象

  • string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB

//常用命令
set key value   //定义
get key         //获取
​
//覆盖key存储的字符串的指定位置之后的值 
//值得注意的是这个操作不会刷新字符串生命周期,是个更新的办法
SETRANGE KEY_NAME OFFSET(位置) VALUE(值)
​
//获取字符串长度
STRLEN KEY_NAME

Hash(哈希)

  • Redis hash 是一个键值(key=>value)对集合,他将value再分为field与value两部分,从而进行CURD

//定义以及获取
hset key name1 value1 name2 value2
hget key name1                  //拿到第一个值
hget key name2                  //拿地第二个值
​
//判断存在
HEXISTS KEY_NAME FIELD_NAME     //返回的是bool值
​
//获取哈希表里的值
HGETALL KEY_NAME                //返回的是key value交错的数组
​
//获取哈希表中字段的数量,也就是有几个键值对
HLEN KEY_NAME 
​
//Redis HSCAN 命令用于迭代哈希表中的键值对,常用于模糊搜索
HSCAN key cursor [MATCH pattern] [COUNT count]
//但是由于每一次搜索后游标会变,一个解决方法是在COUNT那指定要返回多少个,或者直接暴力给一个比较大的值
//还存在的问题是会返回重复的元素,所以需要一个去重处理
//例子,要实现模糊搜索的话,$search比如说 *高*数*
hscan laravel_database 0 match $search count 1000

(图为Another Redis可视化软件实例)

List(列表)

  • 按照插入顺序排序。你可以添加一个元素到列表的头部(左边L)或者尾部(右边R),类似于链表文档

Set(集合)

  • Redis 的 Set 是 string 类型的无序集合,元素不可重复,查找快

  • 我的使用场景是根据计算用户喜好,浏览量,收藏量等根据所有用户来进行视频以及文章推荐,使用redis集合的交集来实现

//定义
SADD key value
//获取
SMEMBERS key
//个数
SCARD KEY_NAME 
//集合交集
SINTER KEY KEY1..KEYN 
//取交集并储存在DESTINATION_KEY 中
SINTERSTORE DESTINATION_KEY KEY KEY1..KEYN 
//集合所有元素
SMEMBERS key
//取差异
SDIFF FIRST_KEY OTHER_KEY1..OTHER_KEYN 
//去差异并储存
SDIFFSTORE DESTINATION_KEY KEY1..KEYN 
//移除成员
SREM KEY MEMBER1..MEMBERN

zset(sorted set 有序集合)

  • 可排序,元素不可重复,查询快,相对于set多了一个序号,命令与set相似

  • 其中所有排名默认是升序

发布订阅

  • 以及进阶的 Stream

  • 很遗憾的是我暂时还未实战redis这个功能

SUBSCRIBE channel       //博主订阅频道
PUBLISH channel "发布的内容" //用户收到发布的内容

事务

  • 批量操作在发送 EXEC 命令前被放入队列缓存

  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行

  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

 MULTI      //开始一个事务
 ...
 EXEC       //执行

其余的一些命令

  • keys 查看符合模板的key,key多个时搜索慢同时占用了线程,生产中不建议使用

  • del 删除指定的key,可以是多个,返回的是删除的个数

  • exists 判断是否存在

  • expire 给key设置有效期

    expire key <time(s)>
  • ttl 查看key剩余的时间 其中-1是永久,-2是不存在

Key的层级结构

  • 允许有多个单词形成层级结构,用“:”隔开,形成文件夹类似的结构,在可视化界面里就会格外清晰

  • 例如:

缓存实战运用

  • 缓存优化搜索速度实现架构图

  • 需要注意的是数据一致性的问题,在每一个设计到CURD的地方都要注意mysql和redis的一致性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值