1.作为分布式锁 2.作为点赞量videaId,0 incr(videaId),排行榜,转发量。 什么是计数器,如电商网站商品的浏览量、视频网站视频的播放数等。为了保证数据实时效,每次浏览都得给+1,并发量高时如果每次都请求数据库操作无疑是种挑战和压力。Redis提供的incr命令来实现计数器功能,内存操作,性能非常好,非常适用于这些计数场景 。 关系型数据库在排行榜方面查询速度普遍偏慢,所以可以借助redis的SortedSet进行热点数据的排序。 在...
Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。 Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Valu...
1、说说 Redis 都有哪些应用场景?缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。共享Session:对于一些依赖 session 功能的服务来说,如果需要从单机变成集群的话,可以选择 redis 来统一管理 session。消息队列系统:消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务 解耦、非实时业务削峰等特性。Redis提供了发...
本文参考 嗨客网 Redis面试题Hash算法 什么是Hash Hash 也称散列、哈希,对应的英文都是 Hash。基本原理就是把任意长度的输入,通过 Hash 算法变成固定长度的输出。这个映射的规则就是对应的 Hash 算法,而原始数据映射后的二进制串就是哈希值。活动开发中经常使用的 MD5 和 SHA 都是历史悠久的 Hash 算法。 echo md5("嗨客网(www.haicoder.net)");// 输出结果:c039822701479838d74267c87495db39在这个例子里,这是一个测试文案...
Redis缓存如何保证数据一致性 一. Redis概述 redis是一个内存数据库, 因此数据基本上都存在于内存当中但是Redis会定时以追加或者快照的方式刷新到硬盘中.由于redis是一个内存数据库, 所以读取写入的速度是非常快的, 所以经常被用来做数据, 页面等的缓存。 二.为什么会出现数据不一致 2.1 一般的读写模式 当Redis作为缓存的时候,经典的读写模式如下: (1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓...
文章目录 Redis概述什么是RedisRedis为什么这么快Redis有哪些数据类型Redis底层数据结构Redis底层实现之跳跃表 Redis持久化机制RDBAOF 缓存异常缓存雪崩缓存穿透缓存击穿缓存预热缓存更新缓存降级热点数据和冷数据 事务Redis事务的概念Redis事务的三个阶段Redis事务相关命令事务的ACID Redis分布式问题分布式锁什么是 RedLock 常用工具Redis支持的Java客户端都有哪些?官方推荐用哪个?Redis和Redisson有什么关系?Jedis与Redisson...
1、什么是redis? 2、Reids的特点 3、使用redis有哪些好处? 4、redis相比memcached有哪些优势? 5、Memcache与Redis的区别都有哪些? 6、redis适用于的场景? 7、redis的缓存失效策略和主键失效机制 8、为什么redis需要把所有数据放到内存中? 9、Redis是单进程单线程的 10、redis的并发竞争问题如何解决? 11、redis常见性能问题和解决方案 12、redis事物的了解CAS(check-and-set 操作实现乐观锁 )? 13、WATCH命令和基于CAS的乐观锁?...
文章目录 Redis介绍Redis特点Redis和Memcached区别 Redis内部数据结构字符串字典压缩列表快速列表跳跃列表为什么Redis选择使用跳表而不是红黑树来实现有序集合?Redis应用分布式锁延时队列位图HyperLogLog布隆过滤器 Gossip协议Redis单进程单线程方式单进程单线程好处单进程单线程弊端其他一些优秀的开源软件采用的模型多路I/O复用模型 Redis快的主要原因Redis主从复制Redis持久化Redis RDB和AOF的优缺点对比以及如何选择RDB和AOF到...
本文参考 嗨客网 Redis面试题Redis集群Twemproxy与Codis Redis常见集群技术 长期以来,Redis 本身仅支持单实例,内存一般最多 10~20GB。这无法支撑大型线上业务系统的需求。而且也造成资源的利用率过低——毕竟现在服务器内存动辄 100~200GB。 为解决单机承载能力不足的问题,各大互联网企业纷纷出手,“自助式” 地实现了集群机制。在这些非官方集群解决方案中,物理上把数据 “分片”(sharding)存储在多个 Redis 实例,一般情况...
Redis的字典由 dict.h/dict 结构如下(rehash的重点) typedef struct dict {//类型特性函数dictType *type;//私有数据void *privdata;//哈希表dictht ht[2];//rehash索引//当rehash没有进行时为-1int trehashidx; }ht 属性是一个包含两个项的数组,数组中的每个项都是一个dictht哈希表,一般情况下使用的都是ht[0]的哈希表,而ht[1]的哈希表只会在rehash的时候使用。随着操作的进行,哈希表中的键值对会逐渐增多或减少,这时为了让...
1.redis概念 Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能、非关系型(NoSql)的键值对(key-value)数据库 2.redis特征 1.数据间没有必然的关联关系 2.内部采用单线程机制进行工作 3.高性能 4.多数据类型支持 5.支持持久化,可以进行数据灾难恢复 3.redis应用场景 1.为热点数据加速查询(主要场景)。如热点商品,热点新闻,热点资讯等高访问量信息。 2.即时信息查询。如排行榜、公交到站信息、在线人数信...
本文参考 嗨客网 Redis面试题Redis脚本 Redis为什么引入Lua Redis 是高性能的 key-value 内存数据库,在部分场景下,是对关系数据库的良好补充。Redis 提供了非常丰富的指令集,官网上提供了 200 多个命令。但是某些特定领域,需要扩充若干指令原子性执行时,仅使用原生命令便无法完成。Redis 意识到上述问题后,在 2.6 版本推出了 lua 脚本功能,允许开发者使用 Lua 语言编写脚本传到 Redis 中执行。 用户可以向 Redis 服务器发送...
常见问题百万千万级别的数据能否使用keys *命令?为什么? keys和scan的区别 keys用法:keys * scan用法:scan 0 match pip* count 10 解释:从下边是0的位置开始扫描,查找name开头的key,每次查找10条127.0.0.1:6379[10]> scan 0 match "pip*" count 10 1) "327680" 2) 1) "pipline:778732"2) "pipline:694657"3)
Redis 大厂常见面试题 Redis 的应用场景 缓冲排行榜计数器分布式会话分布式锁社交网络最新列表消息系统 详细看 Redis的8大应用场景 Redis 缓冲与数据库的一致性问题 某个时刻,多个系统实例都去更新某个 key。可以基于 Zookeeper 实现分布式锁。每个系统通过 Zookeeper 获取分布式锁,确保同一时间,只能有一个系统实例在操作某个 Key,别人都不允许读和写。 你要写入缓存的数据,都是从 MySQL 里查出来的,都得写入 MySQL 中,写入...
目录 MySQL 1、MySQL 中有哪几种锁? 2.简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别? 3.MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别? 4.什么是脏读,缓读,不可重复读? 5.谈一谈MySQL的优化? 6.什么是内联接、左外联接、右外联接? 7.如何通俗地理解三个范式? 8.什么是基本表?什么是视图?试述视图的优点? 9.MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? 10.简...