Livfer's Blog


  • 首页

  • 标签

  • 分类

  • 归档

Redis与DB之间的缓存策略

发表于 2020-07-28 | 分类于 Redis

当时用缓存和DB之间配合时,如何更新缓存,更新DB数据,常用的是读数据,先读缓存,更新数据,先更新数据库,再写入缓存,除了这种策略还有哪些策略呢?

策略一

读操作

  1. 先查询缓存,如果存在则直接返回
  2. 如果缓存不存在,则查询数据库,查询到结果写入缓存,返回数据
  3. 如果数据库中也不存在数据,则设置一个短期过期的key写入缓存,防止请求大量此数据

写操作

  1. 先更新数据库
  2. 更新数据库成功后,将数据更新缓存,返回数据

缺点

当频繁修改操作时,如果在修改操作还未完成时,又发起了读取操作,则会造成数据不一致

阅读全文 »

Redis-ZSET

发表于 2020-07-23 | 分类于 Redis

有序集合ZET

场景

  • 排行榜(热销商品,帖子排名,热门数据)
  • 各类有序榜单(成绩排名,关注时间排名)

SET对比

  • 数据唯一的集合
  • SET无序,ZSET有序

命令

ZADD

  • ZADD key score member[[score member][score member]...]
  • 将一个或多个score,member插入到有序集合中
  • 如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上
  • score 可以是整数或双精度浮点数
  • 如果 key 不存在,则创建一个空的有序集并执行操作
阅读全文 »

Redis命令整理(SET,HASH)

发表于 2020-07-22 | 分类于 Redis

Set

键值无序且唯一

SETADD

  • SADD key member [member ...]
  • 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
  • 假如 key 不存在,则创建一个只包含 member 元素作成员的集合
  • 返回添加的新元素数量,重复值忽略

SCARD

  • SCARD key
  • 返回key含有的元素数量
阅读全文 »

Redis命令整理(String,List)

发表于 2020-07-21 | 分类于 Redis

String

SET

  • SET key value [EX seconds][PX milliseconds] [NX|XX]

  • 可选参数

    1. EX seconds: 设置过期时间,单位为秒,原子操作.SET key value EX second 效果等同于 SETEX key second value
    2. PX milliseconds:设置过期时间,单位为毫秒,原子操作 SET key value PX millisecond 效果等同于 PSETEX keymillisecond value
    3. NX:只有键不存在时,才会操作.SET key value NX 效果等同于 SETNX key value
    4. XX:只在键已经存在时,才对键进行设置操作
    阅读全文 »

签到实现

发表于 2020-07-21 | 分类于 PHP , 随笔

签到实现

MySQL

传统版本

  • 表设计
字段 说明
id 主键
user_id 用户ID
created_at 签到日期
continuous_count 连续签到天数
  • 业务处理

    • 每次签到插入一条新数据
    • 计算连续签到天数
    • 如果非连续签到,连续签到天数为0
    阅读全文 »

PHP-随笔

发表于 2020-06-15 | 分类于 PHP , 随笔

homestead查看所有PHP版本

1
2
3
4
# 查看所有 php 版本和当前版本
update-alternatives --display php
# 执行后,会列出当前 php 所有版本和编号,输入编号,切换到执行的版本
update-alternatives --config php

自省CSS-3

发表于 2020-05-19 | 分类于 前端 , 自省系列 , HTML

盒模型

  • 标准盒模型: 内容宽度 = content的宽度
  • IE盒模型: 内容宽度 = content宽度 + border + padding
  • 可以通过box-sizing控制盒模型,content-box,border-box
阅读全文 »

Vue响应式原理

发表于 2020-05-18 | 分类于 前端 , Vue

vue运行过程

  • new Vue(),创建Vue实例化对象
  • vue初始化init,在这个过程中会初始化生命周期,执行beforeCreated,初始化data,props,computed,watcher,执行created
  • 初始化后,对vue实例进行挂载,如果没有render方法,定义了template,执行编译阶段,开始解析template,将template编译成render function
  • beforeMounted阶段将通过vue的render方法将生成虚拟DOM
  • mounted阶段,将虚拟DOM转化成真实的DOM文档,进行页面渲染,并完成数据双向绑定
阅读全文 »

Vue随笔

发表于 2020-05-16 | 分类于 前端 , Vue

v-if和v-show区别

  • v-if通过条件来进行渲染和销毁
  • v-show通过条件,控制CSS的显示和隐藏
  • v-if比v-show开销大
  • 经常需要控制显示和隐藏的用v-show
阅读全文 »

vue的实例生命周期

发表于 2020-05-15 | 分类于 前端 , Vue

Vue生命周期

常用的生命周期

beforeCreated

实例创建前,data没有挂载,$el不存在,methods,computed和watch上的数据都不能访问

created

实例创建完成,完成数据初始化,$rel为空数组,$el不能访问,data,methods,computed,watch上的数据都可以访问,推荐这个时候发送数据请求

阅读全文 »
12…8
Livfer

Livfer

代码的搬运工

73 日志
18 分类
39 标签
GitHub E-Mail
Links
  • 🍊程成🍊
© 2020 Livfer
由 Hexo 强力驱动
|
主题 — NexT.Mist