Redis
文章平均质量分 71
-星雨-
缘不知所起
展开
-
Reids的两种持久化存储的形式
Reids的两种持久化存储的形式1 RDB内存快照与AOF增量日志1.1 RDB(Redis Data Base)内存快照1.1.1 优点1.1.2 缺点1.2 AOF(Append Only File)增量日志1.2.1 优点1.2.2 缺点2 Fork1 RDB内存快照与AOF增量日志1.1 RDB(Redis Data Base)内存快照RDB内存快照:指的是在指定的时间间隔内将内存中的数据集以快照的形式写进磁盘,RDB是内存快照(内存数据的二进制序列化形式)的方式持久化,每次都是从Redis中转载 2021-07-16 22:03:36 · 257 阅读 · 0 评论 -
Redis之Scan
Redis之Scan1 介绍2 基本用法3 原理4 其他用法1 介绍Scan 实际上是keys的升级版可以用keys来查询key,在查询的过程中,可以使用通配符。keys虽然用着还算方便,但是没有分页功能。同时因为Redis是单线程,所以key的执行会比较消耗时间,特别是当数据流大的时候,影响整个程序的运行。为了解决keys存在的问题,从Redis2.8中开始,引入了Scan(通过游标分布执行)Scan具备keys的功能,但是不会阻塞线程,而且可以控制每次返回的结果数。2 基本用法首先准备原创 2021-06-16 17:41:51 · 603 阅读 · 0 评论 -
Redis之GeoHash算法
Redis之GeoHash算法1 GeoHash2 GeoHash在Redis中的使用Redis3.2开始提供了GEO模块,该模块也使用GeoHash算法。(通用的)功能:查看附件的酒店、加油站1 GeoHash核心思想:GeoHash是一种地址编码方法,使用这种方式,能够将二维的空间经纬度数据编码转换成一个一维字符串。地球上经纬度的划分:以经过伦敦的格林尼治天文台的经线为0度经线,向东就是东经,向西就是西经。如果我没将西经定义为负数,那么经度的范围就是[-180,180]维度:北纬90原创 2021-06-16 17:31:54 · 508 阅读 · 0 评论 -
Redis之限流
Redis之限流1 介绍2 简单限流3 深入限流操作4 Lettuce应用1 介绍Pipeline(管道)本质上是由客户端提供的一种操作。Pipline通过调整指令列表的读写顺序,可以大幅度节省IO时间,提高效率。2 简单限流public class RateLimiter { private Jedis jedis; public RateLimiter(Jedis jedis) { this.jedis = jedis; } /** *原创 2021-06-16 16:31:43 · 462 阅读 · 0 评论 -
Redis之布隆过滤器
Redis之布隆过滤器1 问题场景2 Bloom Filter概念介绍3 原理介绍4 Bloom Filter安装5 基本用法6 典型场景1 问题场景我们用HyperLogLog来估计一个数,有偏差但是也够用。HyperLogLog主要提供两个方法:pfadd和pfcount但是HyperLogLog没有判断是否包含的方法,例如pfexists、pfcontains等。没有办法统计某个值是否存在,但我们有这个业务需求。例如刷今日头条,推送的内容有相似的,但是没有重复的。这就涉及到如何在推原创 2021-06-16 15:58:30 · 379 阅读 · 0 评论 -
Redis之HyperLogLog
Redis之HyperLogLogRedis中的HyperLogLog(可用于统计网站访问量)Redis中的HyperLogLog(可用于统计网站访问量)一般我们评估一个网站的访问量,有几个主要的参数:pv:Page View,网页的浏览量uv:User View,访问的用户一般来说,pv或者uv的统计,可以自己来做,也可以借助一些第三方的工具,比如cnzz,友盟等。如果自己实现,pv比较简单,可以直接通过Redis计数器就能实现。但是uv就不一样,uv设计到另外一个问题,去重。我们首先原创 2021-06-16 15:38:17 · 2334 阅读 · 0 评论 -
Redis之操作位图
Redis之操作位图(Bit操作)1 示例2 操作2.1 零存整取2.2 整存零取2.3 统计2.4 Bit批处理1 示例用户一年的签到记录,如果你用String类型来存储,那则需要365个 key/value来存储,操作起来麻烦。通过位图可以有效的简化这个操作。它的统计很简单:01111000111(0没签到,1签到)(每一个占1比特,8比特就是1字节)每天的记录占一个位,365天就是365个位,大概46个字节,这样可以有效的节省存储空间,如果有一天想要通过用户一共签到了多少天,统计1的个数即原创 2021-06-16 15:22:28 · 332 阅读 · 0 评论 -
Redis之安装
Redis之安装1 使用方式2 Linux环境1 使用方式直接编译安装(推荐使用)使用 Docker还有一个在线体验的方式,通过在线体验,可以直接使用 Redis 的功能http://try.redis.io/2 Linux环境直接编译安装下提前准备好gcc环境yum install gcc-c++接下来下载并安装 Redis:wget http://download.redis.io/releases/redis-5.0.7.tar.gz tar -zxvf redis-5.原创 2021-06-16 13:53:30 · 105 阅读 · 0 评论 -
Reids之消息队列
Reids之消息队列1 消息队列1.1 消息队列1.2 延迟消息队列1 消息队列平时说的消息队列,一般都是指RabbitMQ,RocketMQ,ActiveMQ以及大数据里面的Kafka,这些是我们比较常见的消息中间件,也是非常专业的消息中间件。而作为专业的中间件,它里面提供了很多关于消息中间件的功能。但是,我们在使用消息中间件的时候,不是每一次都需要专业的消息中间件,假如我们只有一个消息队列,一个消费者,那就没有必要使用上面这些专业的消息中间件,这种情况我们可以直接使用Redis来做消息队列。Re原创 2021-06-15 23:27:08 · 409 阅读 · 1 评论 -
Redis之分布式锁
Redis之分布式锁1 分布式锁(distributed lock)是Reids常见的使用场景1.1 代码示例1.2 解决超时问题1 分布式锁(distributed lock)是Reids常见的使用场景分布式锁的问题场景:例如一个简单的用户操作,一个线程去修改用户的状态,首先从数据库中读取出用户的状态,然后在内存中进行修改,修改后再把数据存储回去。在单线程这个操作是没有问题的,但是在多线程中,由于读取、修改、存储 这是三个操作,不是原子操作(一起成功、一起完成),所以在多线程中,这样就会出现问题原创 2021-06-15 22:11:46 · 1261 阅读 · 0 评论 -
Redis开启远程连接
Redis开启远程连接1 开启远程连接2 Jedis连接Redis3 Jedis优化连接3.1 Jedis连接池4 lettuce1 开启远程连接redis默认是不支持远程连接,需要手动开启,在redis.conf文件中,找到下方法代码:#bind 127.0.0.1这里只允许127.0.0.1登录,注释掉开启密码校验,去掉requirepass的注析requirepass password//设置密码为password(自定义的,随便设)改完之后,保存退出,启动redisredis-原创 2021-06-15 20:47:19 · 14608 阅读 · 1 评论 -
Redis之key相关
Redis之基本数据类型可用1 key2 del3 dump4 exists5 expire6 persist7 ttl8 pttl9 额外1 key在五种基本数据类型都可以用查看所有的keykeys *(获取key为k开头的)127.0.0.1:6379> keys k*1) "k1"2) "k2"2 del删除一个key/valuedel k13 dump序列化给定的key,并返回序列化的值127.0.0.1:6379> set k1 111OK127.原创 2021-06-15 20:18:18 · 287 阅读 · 0 评论 -
Redis之Zset
Redis之Zset1 Zset1.1 zadd1.2 zsorce1.3 zrange(正序)1.4 zrevrange(倒序)1.5 zcard1.6 zcount1.7 zrangebyscore1.8 zrank1.9 zrevrank1.10 zincrby1.11 zinterstore1.12 zrem1.13 zlexcount1.14 zrangebylex1 Zset有序的集合1.1 zadd将指定的元素添加到有序集合中zadd k1 60 v1zadd k1 70 v2 8原创 2021-06-15 18:25:01 · 947 阅读 · 0 评论 -
Redis之Hash
Redis之Hash1 Hash1.1 hset1.2 hget1.3 hmset1.4 hmget1.5 hdel1.6 hsetnx1.7 hvals1.7 hkeys1.8 hgetall1.9 hexists1.10 hincrby1.11 hincrbyfloat1.12 hlen1.13 hstrlen1 Hash在hash结构中,key是一个字符串,value是一个key/value的键值对1.1 hset添加值。127.0.0.1:6379> hset k1 name ql原创 2021-06-15 18:12:48 · 156 阅读 · 0 评论 -
Redis之Set
Redis之Set1 Set1.1 sadd1.2 smembers1.3 srem1.4 sismember1.5 scard1.6 srandmember1.7 spop1.8 smove1.9 sdiff1.10 sdiffstore1.11 sinter1.12 sinterstore1.13 sunion1.14 sunionstore1 SetSet(里面的元素不可以重复)1.1 sadd添加元素到key中(相同的只会加一个)sadd k1 a a a(integer) 11.2原创 2021-06-15 17:25:16 · 97 阅读 · 0 评论 -
Redis之list
Redis之list1 List1.1 Ipush1.2 Irange1.3 rpush1.4 rpop1.5 lpop1.6 lindex1.7 ltrim1.8 blpop1 List指的是value是list的形式1.1 IpushIpush表示将value的值从左到右依次插入表头位置(有点像入队Queue:先到先得)(l=left=左边的先进)lpush k1 java.org taobao.com ql.com www.baidu.com1.2 Irange返回列表指定区间内的元素原创 2021-06-15 17:01:42 · 346 阅读 · 0 评论 -
Redis之String
Redis之String1 String1.1 set1.2 append1.3 get1.4 decr1.5 incr1.6 mget和mset1.7 ttl1.8 setex1.9 psetex1.10 setnx(分布式锁的关键)1.11 getrange1.12 setrange1.13 strlen1 StringString是Redis里面最简单的一种数据结构。在Reids中,所有的key都是字符串(序列化之后是字符串)不同的key对应的value则具备不同的数据结构,对于常说的五种不原创 2021-06-15 16:36:23 · 1405 阅读 · 1 评论 -
Redis
Redis1 数据类型2 基本应用1 数据类型StringListSetHashZset2 基本应用分布式锁消息队列操作位图HyperLogLog(统计网站访问量)布隆过滤器限流GeoHash(GeoHash是一种地址编码方法,使用这种方式,能够将二维的空间经纬度数据编码转换成一个一维字符串。)...原创 2021-06-15 15:02:20 · 124 阅读 · 1 评论