1.redis是什么?
redis是一个非关系型数据库,主要是用来解决高并发,高可用产生的大数据存储问题,它是单线程的操作。
2.redis有哪几种数据类型,分别是什么?
有五种类型:string,hash,list,set,zset
3.redis的基本操作?
字符串类型(string)get,set,mget,mset(set a 12)
散列类型(hash)hget,hset,hmset,hmget(hset hashtable a 12)
列表类型(list)push.pop,lrange(push listtable 12)
集合类型(set)(sadd settable 2)
有序集合类型(zset)(zadd zsetTable 12 11)
模糊获取key:keys *;
4.redis持久化方案:
①基于快照的方式,默认;
②基于文档追加的方式,配置:appendonly true;appendfsync everySsec;appendfilename "";
5.主备原理
1、 当从库和主库建立MS关系后,会向主数据库发送SYNC命令;
2、 主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来;
3、 当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis;
4、 从Redis接收到后,会载入快照文件并且执行收到的缓存的命令;
5、 之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致;
主从配置就是搞一个动态的备份;
6.集群原理
6.1 数值存储:Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽
,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。
6.2 集群可用性:①节点之间使用ping-pang判断彼此的链接性,当有一半节点认为某节点挂了,该节点备用节点顶上。
②当有一半主节点挂掉就不可用。
7.redis雪崩和redis穿透处理方案
缓存穿透:当在大并发情况下,首先在redis缓存中查询,查询不到会到db中查询,从而给db造成压力。
方案一:设置布隆过滤器
方案二:返回空值进行存储(建议)
缓存雪崩:某一时段导致大面积缓存key失效
方案一:redis设置主备
redis设置缓存键的失效时间要均匀(建议)
8.redis实际项目中的使用
Jedis
redisTemplate