redis分布式锁

Redis 面试题

走远了吗. 提交于 2019-12-16 02:22:47
Redis 面试题 1、什么是 Redis? 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性能问题和解决方案? 10、redis 过期键的删除策略? 11、Redis 的回收策略(淘汰策略)? 12、为什么 edis 需要把所有数据放到内存中? 13、Redis 的同步机制了解么? 14、Pipeline 有什么好处,为什么要用 pipeline? 15、是否使用过 Redis 集群,集群的原理是什么? 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis 哈希槽的概念? 21、Redis 集群的主从复制模型是怎样的? 22、Redis 集群会有写操作丢失吗?为什么? 23、Redis 集群之间是如何复制的? 24、Redis 集群最大节点个数是多少? 25、Redis 集群如何选择数据库? 26

Redis常见问题和知识点汇总

白昼怎懂夜的黑 提交于 2019-12-15 14:41:35
Redis 相关的问题有很多需要注意,本文就大多数问题做了解答。 目录 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的乐观锁? 14.使用过Redis分布式锁么,它是什么回事? 15.假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来? 16.使用过Redis做异步队列么,你是怎么用的? 17.如果有大量的key需要设置同一时间过期,一般需要注意什么? 18.Redis如何做持久化的? 19.Pipeline有什么好处,为什么要用pipeline? 20.Redis的同步机制了解么? 21.是否使用过Redis集群,集群的原理是什么? 1.什么是redis?    Redis 是一个基于内存的高性能key-value数据库。

美团 Java 面试 154 道题分享

和自甴很熟 提交于 2019-12-14 13:39:32
Java集合22题 ArrayList 和 Vector 的区别。 说说 ArrayList,Vector, LinkedList 的存储性能和特性。 快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么? hashmap 的数据结构。 HashMap 的工作原理是什么? Hashmap 什么时候进行扩容呢? List、Map、Set 三个接口,存取元素时,各有什么特点? Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是 equals()? 它们有何区别? 两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对? heap 和 stack 有什么区别。 Java 集合类框架的基本接口有哪些? HashSet 和 TreeSet 有什么区别? HashSet 的底层实现是什么? LinkedHashMap 的实现原理? 为什么集合类没有实现 Cloneable 和 Serializable 接口? 什么是迭代器 (Iterator)? Iterator 和 ListIterator 的区别是什么? 数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是 ArrayList? Java 集合类框架的最佳实践有哪些? Set

从零开始学Redis之半步神游

巧了我就是萌 提交于 2019-12-13 15:01:59
前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger 种一棵树最好的时间是十年前,其次是现在 我知道很多人不玩 qq 了,但是怀旧一下,欢迎加入六脉神剑Java菜鸟学习群,群聊号码: 549684836 鼓励大家在技术的路上写博客 絮叨 半步神游,神游之下,天下无敌。一梦一游 便是天下。 Redis前面几篇的文章链接: 🔥从零开始学Redis之金刚凡境 🔥从零开始学Redis之自在地境 🔥从零开始学Redis之逍遥天境 上一篇的逍遥天境 讲的是Redis的内存淘汰策略 和持久化方式。那这半步神游就是带你们遨游Redis的主从HA,哨兵,和Lua脚本 Redis主从和哨兵模式 Redis 主从搭建(有兴趣的小伙伴自己用虚拟机搭一个玩玩) 1、环境说明 主机名称 IP地址 redis版本和角色说明 redis-master 192.168.56.11 redis 5.0.3(主) redis-slave01 192.168.56.12 redis 5.0.3(从) redis-slave02 192.168.56.13 redis 5.0.3(从) 2、修改主从的redis配置文件 [root@redis-master ~]# grep -Ev "^$|#" /usr/local/redis

【转载】基于redis的分布式锁

感情迁移 提交于 2019-12-13 10:46:12
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。 可靠性 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。 解铃还须系铃人。加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了。 代码实现 组件依赖 首先我们要通过Maven引入Jedis开源组件,在pom.xml文件加入下面的代码: ? 1 2 3 4 5 < dependency > < groupId >redis.clients</ groupId > < artifactId >jedis</ artifactId > < version >2.9.0</ version > </ dependency > 加锁代码 正确姿势 Talk is cheap, show me the code

Redis中的Java分布式缓存

邮差的信 提交于 2019-12-12 16:58:35
为什么在分布式Java应用程序中使用缓存?今天学习了两节优锐课讲解分布式缓存的内容,收获颇多,分享给大家。 在提高应用程序的速度和性能时,每毫秒都是至关重要的。例如,根据Google的一项研究,如果网站在3秒或更短时间内无法加载,则有53%的移动用户会离开该网站。 缓存是使你的分布式应用程序更快的最重要的技术之一。你可以将信息存储到计算机的CPU中越近,访问信息的速度就越快。从CPU缓存中加载数据要比从RAM中加载数据快得多,这也比从硬盘或通过网络加载数据快得多。 为了存储经常访问的数据,分布式应用程序在多台计算机上维护高速缓存。分布式缓存通常是减少分布式应用程序的延迟并提高其并发性和可伸缩性的基本策略。 Redis是一种流行的开源内存中数据结构存储,可以用作数据库,缓存或消息代理。因为Redis从内存而不是从磁盘加载数据,所以Redis比许多传统的数据库解决方案要快。 但是,使分布式缓存在Redis中正常工作对于开发人员可能是一个挑战。例如,本地缓存失效是替换或删除缓存条目的过程,必须谨慎处理。每次更新或删除一台计算机上本地缓存中存储的信息时,都必须更新作为分布式缓存一部分的所有计算机上的内存中缓存。 好消息是,有Redis框架(例如Redisson)可以帮助你构建应用程序所需的分布式缓存。在下一部分中,我们将讨论Redisson中三种重要的分布式缓存实现:Maps,Spring

学了这篇redis从入门到精通,redis笔记全收录,必须收藏

别来无恙 提交于 2019-12-12 10:17:57
一、概述 二、数据类型 STRING LIST SET HASH ZSET 三、数据结构 字典 跳跃表 四、使用场景 计数器 缓存 查找表 消息队列 会话缓存 分布式锁实现 其它 五、Redis 与 Memcached 数据类型 数据持久化 分布式 内存管理机制 六、键的过期时间 七、数据淘汰策略 八、持久化 RDB 持久化 AOF 持久化 九、事务 十、事件 文件事件 时间事件 事件的调度与执行 十一、复制 连接过程 主从链 十二、Sentinel 十三、分片 十四、一个简单的论坛系统分析 文章信息 点赞功能 对文章进行排序 参考资料 一、概述 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。 二、数据类型 数据类型 可以存储的值 操作 STRING 字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作 对整数和浮点数执行自增或者自减操作 LIST 列表 从两端压入或者弹出元素 对单个或者多个元素进行修剪, 只保留一个范围内的元素 SET 无序集合 添加、获取、移除单个元素 检查一个元素是否存在于集合中 计算交集、并集、差集

Redis之集群高可用与安全控制

别来无恙 提交于 2019-12-11 14:58:26
Redis 之集群高可用和安全控制 一、 Redis 的主从复制 1.1. 为什么使用主从 单个 Redis 如果因为某种原因宕机的话,可能会导致 Redis 服务不可用,可以使用主从复制实现一主多从,主节点负责写的操作,从节点负责读的操作,主节点会定期将数据同步到从节点中,保证数据一致性的问题。 1.2. 主从的方式 最少需要3个节点。 第一种: 第二种: 优先选择第二种,第一种方式主节点向从节点同步数据压力大。 1.3. 主从复制配置: 将编译之后的 Redis 中的 bin 目录中全部内容 角色 端口 配置文件 主节点 6379 redis_6379.conf 从节点 6380 redis_6380.conf 从节点 6381 redis_6381.conf 从节点 6382 redis_6382.conf 相关目录结构 内存有限,我们只模拟不同端口下的 Redis 主从复制。我模拟了一主三从,采用树状结构: 核心配置:主节点 # ip监控 bind 0.0.0.0 protected-mode no # requirepass 123456 # 端口 port 6379 # 后台运行 daemonize yes # 工作目录 dir ./ # pid pidfile "/var/run/redis_6379.pid" # 日志名 logfile "redis_6379

redis面试题

本秂侑毒 提交于 2019-12-11 14:55:57
1、使用redis有哪些好处? 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) 支持丰富数据类型,支持string,list,set,sorted set,hash 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除 2、redis相比memcached有哪些优势? memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 redis的速度比memcached快很多 redis可以持久化其数据 3、redis常见性能问题和解决方案: Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内 尽量避免在压力很大的主库上增加从库 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3... 这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。 4、redis

Redis面试

烂漫一生 提交于 2019-12-11 13:50:16
1、redis简介 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务场景。除此之外,redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案 2、为什么要用 redis/为什么要用缓存 主要从“高性能”和“高并发”这两点来看待这个问题。 高性能: 假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可! 高并发: redis 和 memcached 的区别 redis支持更丰富的数据类型(支持更复杂的应用场景):Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。 集群模式:memcached没有原生的集群模式