Redis+泛型

开闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭

Redis

启动Redis命令:redis-server redis.conf

进入客户端命令:redis-cli -p 6379(端口号) exit /quit/ctrl+c 退出

关闭Redis命令:redis-cli -p 6379 shutdown

存数据:set key1 value1

​ set key2 value2

批量存数据:mset key1 value1 key2 value2

取数据:get key1

​ get key2

判断数据是否存在:exits key1

​ exits key2

查询所有的数据:keys *

删除数据:del key1

​ del key2

查询数据类型:type key1

​ type key2

Redis默认的内存优化策略

  • 定期删除:每隔100毫秒检查是否有过期的key,检查时随机的方式进行检查(不是检查所有,效率低)
  • 惰性策略:当用户获取key的时候,首先检查是否有超时的数据,如果已将删除,则删除数据

Redis分片机制:

  • 存在问题:虽然实现了内存扩容,但是redis节点并没有实现高可用,如果节点宕机,则redis分片将不可用

一致性哈希算法

  • 一致性哈希算法目的是解决分布式缓存的问题
  • 如果数据相同,则hash结果必然相同
  • 常见hash值,由八位16进制数组成,共有2^32种可能性

Hash算法的三种特性

  • 平衡性:hash的结果平均分配到每个节点上,这样从算法上解决了负载均衡的问题
  • 单调性:在新增或者删减节点时,不影响系统的正常运行
  • 分散性: 将数据分散存储

Redis哨兵机制:

  • 优点:哨兵可以实现redis节点的高可用
  • 缺点:哨兵本身没有实现高可用的效果

Redsi集群搭建:

  • 把热点数据保存到内存中,提高了网站的响应速度,提高了用户体验。

  • 使用Redis集群,保证了数据分散存储,和数据存储的一致性,实现了高可用,以及服务故障的自动迁移。

  • redis-server 7000/redis.conf &

  • redis-cli -p 7000 shutdown &

Redis集群宕机条件:Redis集群中主机缺失,且没有从机替补时,Redis内存数据缺失,集群崩溃。

算法面试题:

  • 核心知识:一致性哈希算法和哈希槽算法解决的都是数据归谁管的问题,最终的数据都会存储到Node节点中。
  • Redis集群中最多有16384个主机(16384个槽位),用来区分数据归哪个节点来存储。
  • Redis集群中数据的存储大小由redis的内存大小来决定。

缓存相关面试题:

  • 缓存穿透:用户在高并发环境下,频繁访问数据库中不存在的数据,导致用户直接访问数据库导致数据库服务器宕机。
  • **缓存击穿:用户在高并发环境下,某个热点数据突然失效,**导致大量请求访问数据库,导致数据库宕机。
  • 缓存雪崩:缓存中大量内存数据失效,导致用户访问缓存几率太低,导致大请求访问数据库,数据库宕机。

布隆过滤器

  • 用法:由hash函数,二进制向量组成
  • 作用:判断一个元素是否存在于集合中
  • 优点:占用空间更小,效率更高
  • 缺点:有一定的误判率(hash碰撞),删除困难

Redis中共有16个数据库(下标0到15)

切换数据库:select 0

				select    1

清空当前数据库:flushdb

清空全部数据库:flushall

泛型(约束)

作用于类、接口、方法上(位置:在方法返回值前面)


版权声明:本文为m0_54164679原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。