0

腾讯百亿级请求高可用Redis(codis)分布式集群实践

一、Redis有哪些常用的应用场景1)string | 计数器,用户信息(id)映射,唯一性(例如用户资格判断),bitmap2)hash | 常见场景:存储对象的属性信息(用户资料)3)list | 常见场景:评论存储,消息队列4)set | 常见场景:资格判断(例如用户奖励领取判断),数据去重等5)sorted set | 常见场景:排行榜,延时队列6)其他 | 分布式锁设计,推荐2篇文章:基于Redis的分布式锁到底安全吗(上)http://zhangtielei.com/posts/blog-redlock-reasoning.html基于Redis的分布式锁到底安全吗(下)http:...

阅读全文>>

0

10亿数据量只需要100MB内存,redis的位存储为什么这么牛?

本文主要和大家分享一下redis的高级特性:bit位操作。力求让大家彻底学会使用redis的bit位操作并掌握其底层实现原理!主要包含以下内容:redis位操作命令示例底层数据结构分析为什么他的算法时间复杂度是O(1)?10亿数据量需要多大的存储空间?redis位操作适合哪些应用场景?本文redis试验代码基于如下环境:操作系统:Mac OS 64位版本:Redis 5.0.7 64 bit运行模式:standalone moderedis位操作reids位操作也叫位数组操作、bitmap,它提供了SETBIT、GETBIT、BITCOUNT、BITTOP四个命令用于操作二进制位数组。先来看一...

阅读全文>>

0

围观,阿里P7大佬超详细揭秘 Redis 持久化

Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持的数据类型很丰富,如字符串、链表、集 合、以及散列等,并且还支持多种排序功能。什么叫持久化?用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、 XML 数据文件中等等。从应用层与系统层理解持久化同时,也可以从应用层和系统层这两个层面来理解持久化:应用层:如果关闭( Close )你的应用然后重新启动则先前的数据依然存在。系统层:如果关闭( Shutdown )你的系统(电脑)然后重新...

阅读全文>>

0

Redis为什么默认16个数据库?

导读:在实际项目中Redis常被应用于做缓存,分布式锁、消息队列等。但是在搭建配置好Redis服务器后很多朋友应该会发现和有这样的疑问,为什么Redis默认建立了16个数据库,如下图所示。 一、16个数据库的由来 Redis是一个字典结构的存储服务器,一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。这与在一个关系数据库实例中可以创建多个数据库类似(如下图所示),所以可以将其中的每个字典都理解成一个独立的数据库。 以MySQL实例为例 Redis默认支持16个数据库,可以通过调整Re...

阅读全文>>

0

万万没想到,Redis多线程版本竟然比原生版本快那么多

如果我告诉您有一个 Redis 的分支版本,它的性能比原生的 Redis 快 5 倍,而且延迟却降低近 5 倍,你会不会想了解一下这个项目?而如果您不再需要哨兵节点并且您的副本可以接受读取和写入,这将有可能使分片数量减少 10 倍,这样对你的吸引力是不是更大了呢? 我说的这个分支版本,它其实是 Redis 的一个分叉版本,名叫 KeyDB 。KeyDB 是 Redis 开源的多线程分叉版本。本文我们将提供最新的基准测试结果,并讨论更强大的 KeyDB 实例如何减少集群大小以及简化堆栈。同时我们还将讨论了多线程体系结构,并演练了如何利用它实现性能的提升。 为什...

阅读全文>>

0

基于Redis设计一个百万级用户的高并发系统

目录 抽奖系统的背景引入 结合具体业务需求分析抽奖系统 一个未经过优化的系统架构 负载均衡层的限流 Tomcat线程数量的优化 基于Redis实现抽奖业务逻辑 ...

阅读全文>>

0

Java架构师-Redis单线程?别逗了,Redis6.0多线程重磅来袭

2019年的 RedisConf 比以往时候来的更早一些,今年会议时间是4月1-3号,仍然是在旧金山鱼人码头Pier 27。恰逢今年是 Redis 第10周年,规模也比以往大一些,注册人数超过1600人,总共有80个议题,除了RedisLabs外还有很多云厂商和Redis用户带来分享。Redis 作者 antirez 在 RedisConf 2019 做了分享,其中一段展示了 Redis 6 引入的多线程 IO 特性对性能提升至少是一倍以上。 无独有偶,在之前 antirez 的博客上,我们已经提前知道了这个消息: ...

阅读全文>>

0

用Redis实现搜索附近人的功能——geohash算法的使用

笔者之前文章介绍过geohash算法,那么今天,我们来讲一下Redis的geo功能。 GeoHash与Z阶曲线的关系 1 引言 “附近的人”在社交类APP已成为标配的功能,简单一点的实现方式可以把坐标存至关系型数据库,通过计算的坐标点距离实现,这种计算可行但计算速度远不及内存操作级别的NoSql数据库。基于Redis的geo就可以轻松实现。 2 Redis处理位置坐标点的思路 Redis中经纬度使用52位的整数进行编码,放进zset中,zset的value元素是key,score是GeoHash的52位整数值。在使...

阅读全文>>

0

redis list判断是否包含某值

在redis的list当中,如果想要判断list中是否包含某值,可以用下面的方法: List list = RedisUtil.getJedis().lrange("testlist",0,RedisUtil.getJedis().llen("testlist")); for(Object item:list){ String value = (String) item; if(value.equals("123")){ RedisUtil.getJedis().lrem("tes...

阅读全文>>