redis
Jaymeng8848
攀爬每一个巨人,站在他们肩膀上看一看
展开
-
如何正确使用redis分布式锁
什么是分布式锁?为什么需要分布式锁? 在java中,在单进程多线程的情况下,为了防止多个线程共同竞争同一个资源,因此需要锁,java中有显示锁和隐式锁来保证,而在多进程的情况下,普通的锁就无法满足要求了,因此我们需要分布式锁,常用的分布式锁解决方案有三种,分别是基于数据库/redis/zookeeper,本文我们主要讨论redis分布式锁. redis分布式锁实现 笔者在面试过程中,问redis分布式锁知识点时的第一个问题就是如何实现一个redis分布式锁,许多候选人直接说,啊,这很简单啊,使用setNx(转载 2020-09-21 15:33:47 · 1721 阅读 · 0 评论 -
Redis中的内存淘汰机制
Redis过期键的删除策略 定时删除,这个就是大家最熟悉的给Key设置过期时间,创建定时器,让定时器在过期时间到来时删除键和值 惰性删除,指当客户端取键时才检查键是否过期,不主动删除过期的键 定期删除,每隔一段时间检查数据库,删除过期的键 定时删除+惰性删除 目前使用的策略 redis采用的是定期删除+惰性删除混合策略,至于为什么不单纯使用定时删除,那是因为用一个定时器监视key,过期自动删除,虽然实现了内存及时释放,但是这样的操作十分消耗CPU资源,高并发的情况下,CPU主要用来处理请求,而不是删除过原创 2020-09-21 11:36:34 · 263 阅读 · 0 评论 -
Redis(Java面试题)
一、什么是Redis? Redis是一种高性能的key-value非关系型数据库,他是基于C语言写的,底层采用NIO多路复用机制,使用一个线程去维护多个不同的socket连接,他只有Linux版本的,没有Windows版本的,Windows版本的Redis是网上大神改写的,因为在Windows中NIO多路复用机制底层使用的是selector选择器,通过for循环去遍历连接,容易造成空轮训,效率比较低,而Linux中是采用epoll事件驱动回调机制,主动去调用活跃的socket连接,避免了空轮训,效率比较高。转载 2020-09-21 11:32:44 · 126 阅读 · 0 评论 -
Redis 操作命令
一、字符串 1 SET key value 设置指定 key 的值 2 GET key 获取指定 key 的值。 3 GETRANGE key start end 返回 key 中字符串值的子字符 4 GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 5 GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 6 MGET key1 [key2…] 获取所有(一个或多个)给定 key 的值。转载 2020-09-21 11:21:54 · 94 阅读 · 0 评论 -
Redis为什么是单线程、及高并发快的大原因详解
一、Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快(纯内存)。 2.redis是单线程的,省去了很多上下文切换线程的时间(避免线程切换和竞态消耗)。 3.redis使用多路复用技术,可以处理并发的连接(非阻塞IO)。 非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。 下面重点介绍单线程设计和IO多路复用核心设计快的原因。 二、为什么Red转载 2020-09-15 09:25:22 · 911 阅读 · 0 评论 -
ehcache、memcache、redis三大缓存比较
Ehcache 在Java项目广泛的使用。它是一个开源的、设计于提高在数据从RDBMS中取出来的高花费、高延迟采取的一种缓存方案。正因为Ehcache具有健壮性(基于java开发)、被认证(具有apache 2.0 license)、充满特色(稍后会详细介绍),所以被用于大型复杂分布式web application的各个节点中。 什么特色? 1. 够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency syste转载 2020-08-07 16:15:40 · 296 阅读 · 0 评论 -
使用快照RDB和AOF将Redis数据持久化到硬盘中(四)
一、前言 我们知道Redis是一款内存服务器,就算我们对自己的服务器足够的信任,不会出现任何软件或者硬件的故障,但也会有可能出现突然断电等情况,造成Redis服务器中的数据失效。因此,我们需要向传统的关系型数据库一样对数据进行备份,将Redis在内存中的数据持久化到硬盘等非易失性介质中,来保证数据的可靠性。 将Redis内存服务器中的数据持久化到硬盘等介质中的一个好处就是,使得我们的服务器在重启之后还可以重用以前的数据,或者是为了防止系统出现故障而将数据备份到一个远程的位置。 还有一些场景,例如: 对于一转载 2020-08-06 21:24:57 · 373 阅读 · 0 评论 -
Redis常见的5种不同的数据类型详解(三)
一、前言 Redis除了可以存储键还可以存储常见的5种数据类型,分别是:String、List、Set、Hash、ZSet。对于Redis的命令有一部分是可以公用的,但是还有一些其他的命令是属于特殊使用的。 首先看看一张关于Redis5种数据结构的对比: 二、String字符串类型 Redis中的String类型就是一个由字节组成的序列,他和其他编程语言或者其他键值对存储提供的字符串操作非常相似。 一个String类型的实例,其中键为hello,值为world: (1)常用命令如下: (2)Redis中转载 2020-08-06 18:58:31 · 231 阅读 · 0 评论 -
Redis简介以及和其他缓存数据库的区别(二)
一、Redis简介 Redis 是一个开源的内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(Strings),散列(Hashes),列表(Lists),集合(Sets),有序集合(Sorted Sets或者是ZSet) 与范围查询, Bitmaps,Hyperloglogs 和 地理空间(Geospatial)索引半径查询。 其中常见的数据结构类型有String、List、Set、Hash、ZSet这5种。 Redis 内置了复制(Replication)转载 2020-08-06 13:03:58 · 1018 阅读 · 0 评论 -
Redis安装(一)
1、综述 Redis是一款内存数据库,所谓内存数据库是指它存储数据的主要介质是内存而非传统意义的磁盘,后者只用于辅助功能。Redis可以当作NoSQL数据库,缓存和消息代理来使用,目前各行业实践中使用Redis最多的场景还是把它当成缓存子系统,例如存储在线用户的登录情况,存储1小时内提交的订单情况等,缓存图片路径或者图片内容等等;其次较多的场景是作为消息代理来使用,例如DUBBO支持使用Redis进行事件订阅和通知。 Redis的发起者是Salvatore Sanfilippo,最初开发它的目的就是为了解决原创 2020-08-06 12:52:39 · 75 阅读 · 0 评论