每日问答12

1.缓存穿透?解决方案

  • 穿透:查询一个一定不存在的数据,由于缓存中都没有,这些请求短时间内直接落在了数据库上,导致数据库异常。

    • 解决方案:

    • 持久层查询不到就缓存空结果,查询时先判断缓存中是否exists(key) ,如果有直接返回空,没有则查询后返回

2.缓存雪崩?解决方案

  • 雪崩:缓存大量失效的时候,引发大量查询数据库

    • 解决方案:

    • ①用锁/分布式锁或者队列串行访问

    • ②缓存失效时间均匀分布

3.List命令和应用场景

  • 赋值lpush key value1[value2] 将一个或多个值插入列表头部(从左侧添加)rpush key value1[value2] 在列表中添加一个或多个值(从右侧添加)lpushx key value 将一个值插入已存在的列表头部,如果列表不存在,操作无效rpushx key value 将一个值插入已存在列表的尾部,如果列表不存在,操作无效

  • 取值llen key 获取列表长度lindex key index 通过索引获取列表中的元素lrange key start stop 获取列表指定范围内的元素

  • 删除语法lpop key 移除并获取列表的第一个元素(从左侧删除)rpop key 移除并获取列表的最后一个元素(从右侧删除)ltrim key start stop 对一个列表进行修剪,让列表只保留指定区间内的元素,其他元素都将被删除

  • 修改语法lset key index value 通过索引设置列表元素的值linsert key before|after world value 在列表元素的前或后插入元素(在world前或后插入value)

  • 高级语法rpoplpush source destination 移除列表的最后一个元素,并将该元素添加到另外一个列表并返回示例: rpoplpush a1 a2 :a1列表最后元素移除a2的左侧

  • 应用场景分页功能 个人详情 热点新闻 用户注册流程

4.Set命令和应用场景

  • 赋值sadd key member1 [member2] 向集合添加一个或多个成员

  • 取值scard key 获取集合的成员数smembers key 返回集合中的所有成员sismember key member 判断member元素是否是集合key的成员srandmember key [count] 返回集合中一个或多个随机数

  • 删除语法srem key member1[member2] 移除集合中一个或多个成员spop key [count] 移除并返回集合中的一个随机元素smove source destination member 将member元素从source集合移动到destination集合

  • 差集sdiff key1 key2 返回给定所有集合的差集(左侧)sdiffstore destination key1 [key2] 返回给定所有集合的交集并存储在destination中

  • 交集sinter key1 [key2] 返回给定所有集合的交集(共有数据)sinterstore destination key1 [key2] 返回给定所有集合的交集并存储在destination中

  • 并集sunion key1 [key2] 返回所有给定集合的并集sunionstore destination key1 [key2] 所有给定所有集合的并集存储在destination中

  • 应用场景抽奖 共同关注 判断存在问题 保存唯一ip

5.ZSet命令和应用场景

  • 赋值zadd key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数

  • 取值zcard key 获取有序集合的成员数zcount key min max 计算在有序集合中指定区间分数的成员数zrank key member 返回有序集合中指定成员的索引

    zrange key start stop [withscores] 通过索引返回有序集合中指定区间的成员(低到高)zreveange key start stop [withscores] 通过索引返回有序集合中指定区间的成员(高到底)

  • 删除del key 移除集合zrem key member [member...] 移除有序集合中一个或多个成员zremrangebyrank key start stop 移除有序集合中给定的排名区间的所有成员(低到高)zremrangebyrank key min max 移除有序集合中给定的分数区间的所有成员

  • 应用场景

    车型排行榜 热点新闻排行榜 成绩排行榜 粉丝贡献度

6.主键索引和非主键索引的区别?

非主键索引的叶子节点存放的是主键的值,而主键索引的叶子节点存放的是整行数据,其中非主键索引也被称为二级索引,而主键索引也被称为聚簇索引

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值