- 博客(30)
- 收藏
- 关注
原创 redis cluster集群搭建
1 环境准备本篇介绍搭建6节点的redis cluster的过程,需准备以下环境3台机器每台机器上安装有一个单机的redis,参考文章redis的安装配置每台机器上的redis和哨兵处于关闭状态如果redis.conf 中配置slaveof,请删除,否则无法启动注:下面是redis和redis哨兵的关闭命令redis-cli [-h host] [-p port] [...
2018-04-01 10:01:30
425
原创 分布式数据存储算法
1 概念分布式数据存储中,数据是分布式在不同的服务器上的,那么每条数据应该存储到哪台服务器?取的时候又应该去哪台服务器去取?分布式数据存储算法就是解决此类问题的算法2 hash算法2.1 过程客户端开始操作数据服务器对数据的key进行hash计算,得到一个数字服务器对得到的数字与服务器数量做取余计算,得到服务器的编号服务器在相应的服务器上进行操作hash算法的...
2018-04-01 06:56:12
4141
原创 Redis哨兵的详解
1 哨兵的作用哨兵是redis集群架构中非常重要的一个组件,主要功能如下: 1. 集群监控:负责监控redis master和slave进程是否正常工作 2. 消息通知:如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员 3. 故障转移:如果master node挂掉了,会自动转移到slave node上 4. 配置中心:如果故障转移发生了,通知client客户端新...
2018-02-23 13:56:23
6982
原创 Redis主从架构的详解
1 核心原理slave node启动,仅仅保存master node的信息,包括master node的host和ip,但是复制流程没开始 master host和ip是从哪儿来的? redis.conf里面的slaveof配置的slave node内部有个定时任务,每秒检查是否有新的master node要连接和复制,如果发现,就跟master node建立socket网络连接...
2018-02-22 16:03:23
691
原创 Redis的持久化机制
1 RDB和AOF两种持久化机制的介绍RDB持久化就是对redis中的数据执行周期性的数据快照备份,这个周期可以自己配置。AOF持久化机制对每条写入命令都以append-only的模式写入一个日志文件中,在redis重启的时候,可以通过回放AOF日志中的写入指令来重新构建整个数据集,append-only可以配置异步或同步。如果我们想要redis仅仅作为纯内存的缓存来用,那么可以禁止RD...
2018-01-31 07:20:50
304
原创 Redis的安装和配置
1 单机1.1 安装tcl1.1.1 下载tcl安装包wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz1.1.2 解压tar -xzvf tcl8.6.1-src.tar.gz1.1.3 移动文件夹到/usr/local目录mv tcl8.6.1 /usr/local/...
2018-01-25 07:54:41
356
原创 Java算法系列4--Union-find算法
1 什么是union-find算法1.1 定义考虑以下问题: 1. java中一个对象引用另外一个对象,而另外一个对象又引用另外一个新的对象,我们如何判断两个对象是否已经存在引用关系? 2. 网络通讯的电缆结构中,一个连接点连接另外一个连接点,而另外一个连接点又连接一个新的连接点,我们如何判断两个连接点之间是否存在连接关系呢? 3. 快递物流路线中,一个物流点开通了通向另外一个物流点的路线,而
2018-01-10 16:04:41
1083
原创 mongodb3.6系列教程10--查询操作符之节点操作符
1 $exists1.1 语法{ field: { $exists: } }说明:$exists操作符用于判断字段存在不存在$exists操作符即便字段值为null,也认为该字段是存在的1.2 示例示例数据:{ a: 5, b: 5, c: null }{ a: 3, b: null, c: 8 }{ a: null, b: 3, c: 9
2018-01-06 09:28:32
299
原创 centos6.8安装配置nginx
1 安装1.1 gcc 安装yum install gcc-c++1.2 PCRE pcre-devel 安装yum install -y pcre pcre-devel1.3 zlib 安装yum install -y zlib zlib-devel1.4 OpenSSL 安装yum install -y openssl openssl-devel1.5 下载Nginxwget -chttps:/
2018-01-04 15:53:21
1282
原创 centos6.8环境的安装配置
1 配置网络1.1 查看所有存在的网卡ifcongif –a 1.2 发现有echo这块网卡,启动eth0这块网卡 ifconfig eth0 up1.3 再次查看网卡ifconfig1.4 网卡开机自动启动echo 'ifconfig eth0 up' >> /etc/rc.local1.5 配置网卡vi /etc/
2018-01-04 15:40:16
2160
原创 第三方商城对接架构设计
1 概述由于业务需要,公司需要将原来的积分兑换商品功能由人工下单改为直接对接第三方商城对接,考虑到以后可能会对接多个第三方商城平台,所以采用统一接口门户调用,不同渠道调用不同实现类的设计方式,方便以后渠道的扩展。整体架构图如下: 第三方商城对接系统本身并不复杂,但是其中的实现细节方面需要注意的方面还是挺多的。比如:商品搜索如何实现,如何保证的库存,如何保证接口的限流,数据如何回滚等等。下面就
2018-01-04 15:26:53
8522
原创 mongodb3.6系列教程9--查询操作符之逻辑操作符
1 $and1.1 语法{ $and: [ { }, { } , ... , { } ] }说明$and操作符就是java中的&&,表示必须满足给定的所有条件。$and操作符是短路操作,只要判断一个条件为false,后面都的都不会再计算。1.2 示例查询price字段等于1.99并且price字段存在的文档:db.inventory.find
2017-12-29 16:06:48
275
原创 mongodb3.6系列教程8--查询操作符之比较操作符
1 $eq1.1 语法{ field>: { $eq: value> } }说明如果field的类型为非数组,$eq的含义为相等,否则,$eq的含义为相等或包含。$eq是3.0版本新增的操作符。$eq等同于直接写 { field: }1.2 示例1–非数组比较查询qty属性值为20的文档:db.inventory.find( { qty: {
2017-12-29 15:48:41
392
原创 mongodb3.6系列教程7--更新文档
1 update() 方法1.1 语法db.collection.update( query>, update>, { upsert: boolean>, multi: boolean>, writeConcern: document> })参数说明:query : update的查询条件,类似sql update查询
2017-12-28 10:07:14
355
原创 mongodb3.6系列教程6--抛出异常的级别
WriteConcern.NONE:没有异常抛出WriteConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。WriteConcern.MAJORITY: 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。WriteConcern.FSYNC_SAFE: 抛出网络错误
2017-12-28 10:05:02
403
原创 mongodb3.6系列教程5--删除文档
1 remove()方法1.1 语法db.collection.remove( query>, justOne>)或 2.6 版本以后的语法:db.collection.remove( query>, { justOne: boolean>, writeConcern: document> })参数说明:qu
2017-12-28 09:40:03
335
原创 基于Redis的限流器的实现
1 概述系统中的接口通常都有限流,比如 70次/秒 ,如何保证我们的接口的调用次数在超过第三方接口限流的时候快速失败呢?这时候就需要限流器了。下面是笔者用redis实现限流器的流程图。 2 代码/** * 获取限流权限 * @param key * @param millisecond 毫秒数 * @param limitCount 限流次数 * @return */public s
2017-12-27 16:39:55
11406
原创 Redis实现分布式锁
1 基础方法/** * 如果为空就插入值,返回true,如果不为空则不做操作,返回false * @param key * @param value * @return */public static Boolean setIfAbsent(String key, String value){ return redisTemplate.opsForValue().setIfAbs
2017-12-27 16:37:36
5397
原创 mongodb3.6系列教程4--插入文档
1 insert()方法1.1 语法db.COLLECTION_NAME.insert(document)insert()方法可以插入单个文档,也可以传递文档数组一次性插入多个文档,一次性插入多个文档是原子性的,有一条失败就会导致全部失败。1.2 示例一次插入一个文档:db.mycol.insert({ _id: 1, name: '小明',
2017-12-26 16:48:42
402
原创 mongodb3.6系列教程3--集合操作
1 查看所有的集合show collections2 创建集合2.1 语法db.createCollection(name, options)参数说明:name: 要创建的集合的名称, 必填options: 集合的配置文档, 可选options参数说明: 字段 类型 描述 capped Boolean (可选)
2017-12-26 16:29:36
1005
原创 mongodb3.6系列教程2--数据导入导出备份恢复
1 数据导出1.1 概念mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。1.2 语法mongoexport -d dbname -c collectionname -o file --type json/csv -f field参数说明:-
2017-12-26 15:47:42
1062
原创 mongodb3.6系列教程1--数据库操作
1 新建或切换数据库新建或切换名称为 mongoTest 的数据库use mongoTest如果数据库不存在,则创建数据库,否则切换到指定数据库。2 查看所有的数据库show dbs结果:admin 0.000GBlocal 0.000GBtest 0.000GB可以看到,我们刚创建的数据库 mongoTest并不在数据库的列表中, 要显
2017-12-26 15:31:17
947
原创 Java抽奖实现
1 概述项目开发中经常会有抽奖这样的营销活动的需求,例如:积分大转盘、刮刮乐、老虎机等等多种形式,其实后台的实现方法是一样的,本文介绍一种常用的抽奖实现方法。整个抽奖过程包括以下几个方面:奖品奖品池抽奖算法奖品限制奖品发放2 奖品奖品包括奖品、奖品概率和限制、奖品记录。 奖品表:CREATE TABLE `points_luck_draw_prize` ( `id` bigint(
2017-12-26 13:40:42
23392
原创 Redis在项目中的运用总结
1 概述Redis作为一款性能优异的内存数据库,在互联网公司有着多种应用场景,本文介绍笔者在项目中使用Redis的场景。主要从以下几个方面介绍:分布式锁接口限流器订单缓存Redis和DB数据一致性处理防止缓存穿透和雪崩分布式session共享2 分布式锁Redis实现分布式锁3 接口限流器Redis实现限流器4 订单缓存整个订单的存储结构如下:使用Redis的zset数据结构存储每个
2017-12-26 13:19:17
25827
原创 SpringDataMongodb系列教程1--XML配置搭建环境
1 概述SpringDataMongodb是Spring对mongodb客户端的封装,本文将讲述如何通过XML配置的方式在项目中使用mongodb。2 引入pom依赖2.1 本文所用的依赖版本Spring:4.3.13 mongodb:3.4.10 spring-data-mongodb:1.10.9.RELEASE2.2 pom依赖<?xml version="1.0" encoding="U
2017-12-26 12:58:44
3449
原创 Java算法系列3--基于链表自定义队列
1 概述队列是一种先进先出的数据结构,本文将基于链表实现一种简单的队列,主要功能包括入队,出队。2 代码实现package com.niuniu.studyalgorithm;import java.util.Iterator;import java.util.Spliterator;import java.util.function.Consumer;/** * @author 002991
2017-12-26 12:45:40
228
原创 Java算法系列2--基于链表自定义栈
1 概述栈是一种后进先出的数据结构,本文使用链表方式实现简单的栈结构,功能包括添加、删除、遍历。2 代码实现package com.niuniu.studyalgorithm;import java.util.Iterator;import java.util.Spliterator;import java.util.function.Consumer;/** * @author 002991
2017-12-26 12:42:23
172
原创 Java算法系列1--基于数组自定义栈
目录目录概述代码实现总结1 优点2 缺点1 概述栈是一种后进先出的数据结构,本文将使用数组实现一个简单栈结构,功能如下:添加、获取、遍历以及使用泛型存储任何类型。2 代码实现package com.niuniu.studyalgorithm;import java.util.Iterator;import java.util.Spliterator;import java.util.
2017-12-26 12:38:05
229
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人