分布式锁 2020-01-07 分布式锁 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现。如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往通过互斥来防止彼此干扰。 分布锁设计目的 可以保证在分布式部署的应用集群中,同一个方法在同一操作只能被一台机器上的一个线程执行。 锁的设计要求 这把锁要是一把可重入锁(避免死锁) 这把锁有高可用的获取锁和释放锁功能 这把锁获取锁和释放锁的性能要好… 分布式锁实现方案分析 获取锁的时候,使用 setnx(SETNX key val:当且仅当 key 不存在时,set 一个 key 为 val 的字符串,返回 1; 若 key 存在,则什么都不做,返回 【0】加锁,锁的 value 值为当前占有锁服务器内网 IP 编号拼接任务标识组成。在释放锁的时候进行判断。并使用 expire 命令为锁添 加一个超时时间,超过该时间则自动释放锁。 获取锁的时候调用 setnx, 如果返回 0,则该锁正在被被人使用,返回 1,则成功获取锁。还设置一个获取的超时时间,若超过这个时间则放弃获取锁。 setex (key,value,expire) 过期以秒为单....
基于Redis的sorted set实现排行榜功能 2020-01-07 业务需求 排行榜功能是一个很普遍的需求。使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择。 一般排行榜都是有实效性的,比如“用户积分榜”,游戏中活跃度排行榜,游戏装备排行榜等。 需求面临的问题 数据库设计复杂。 并发数较高。 数据要求实时性高。 Redis 相关 API 概述 封装 Redis 工具类 RedisService Service 层(RangingService 使用 Redis 工具类) import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.ZSetOperations; import org.springframework.stereotype.Service; import java.util.LinkedHashMap; import java.util.List; im....
SpringBoot整合Redis 2020-11-08 Redis 远程连接配置 [root@localhost ~]# vim /etc/redis/6379.conf bind 0.0.0.0 port 6379 daemonize yes protected-mode no requirepass 123 SpringBoot 整合 Redis 引入依赖 spring-boot-starter-data-redis 包含了 jedis,封装了一类 SpringBoot 与 Redis 的连接工具。 <dependency <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 编写 redisTemplate 的配置类,设置 redisConnectFactory import org.springframework.data.redis.connection.RedisConnectionF....
Redis 2020-01-07 TRDB 建立在 DBMS 上,通过 DBMS 处理数据吗,单机物理性能受限、横向多机扩充(分布式引用)困难。 技术特点 使用强存储模式,表、行、字段的建立都需要预先严格定义,并进行相关数据约束。 采用 SQL 技术标准来定义和操作数据库。 采用强事务保证可用性和安全性。 主要采用单机集中式处理方式。 单机的局限性 单机读、写数据的速度瓶颈问题 单机存储数据量有限 服务器的纵向扩展的局限性 NoSQL 主体符合非关系型、分布式、开源、横向扩展能力的数据库。 技术特点 使用弱存储模式(取消数据存入类型的强制检查等一系列技术…),速度快。 没有采用 SQL 技术标准来定义和操作数据库。 采用弱事务或根本没有事务处理机制。 主要采用多机分布式处理(DP, Distributed Processing)。 数据存储结构多元化。 NoSql vs TRDB TRDB 为强数据存储模式,NoSql 为弱数据存储模式 分布式技术是 NoSql 的核心技术思路、TRDB 以集中处理为出发点 TRDB 的事务严格遵循 ACID 原则,而 NoSql 主体遵循 Base 原则 TRDB ....