NoSQLRedis环境搭建和代码测试及与GIS结合的GEO数据类型预研

著作版权由作者李晓晖和网易共有,若转载请于显著处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

1.1价值观MySQL+ Memcached架构境遇的题目

MySQL本身是切合举行海量数据存储的,通过Memcached将走俏数据加载到cache从而加速访问,很多商行近日都施用这样的架构,但随着业务数据量和访问量的随地加强,大家相见了不少题材:

a.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和保障工作占据大量开销时间。

b.Memcached与MySQL数据库数据一致性问题。

c.Memcached数据命中率低或宕机,大量做客直接穿透到DB,MySQL不能支撑。

d.跨机房cache同步问题。

为缓解上述问题,我们开头拔取用Redis来取代Memcached。

1.2Redis简介

Redis是一种典型的NoSQL数据库服务器,它可以看做服务程序独立运行于自己的服务器主机。在成千上万时候,人们只是将Redis视为Key/Value数据库服务器,可是在现阶段的本子中,Redis除了Key/Value之外还协助List、Hash、Set和Ordered
Set等数据结构,由此它的用途也更加宽泛。Redis的License是Apache
License,就现阶段而言,它是完全免费。

我们常常会将memcached(数据缓存服务器)与Redis来开展自查自纠,因为她俩在拔取方法上相比一般,而且也均是免费,均使用了内存来举办数据缓存。可是它们中间的最大区别在于memcached只是提供了数额缓存服务,一旦服务器宕机,在此之前在内存中缓存的多少也将整个毁灭,
memcached没有提供任何款式的多寡持久化效率,而Redis则提供了如此的效用。第二,Redis提供了尤其充足的数量存储结构,如Hash和Set等。

项目中通常在如下多少个现象中采纳Redis:Session共享,数据收集总结等。

2.Redis条件搭建  

2.1下载安装

Redis对于Linux是官方扶助的,安装和行使参考官网(http://redis.io/download),但是Redis官方是不支持windows的,好在 Microsoft
Open Tech group 在
GitHub上开发了一个Win64的本子,项目地址是:https://github.com/MSOpenTech/redis。打开后,直接使用浏览器下载或Git克隆即可:

 NoSQL 1

直白双击redis-server.exe即起步一个redis服务实例,可是倘若想以windows服务情势运行,需要实施一下发令:

//注册至劳动管理中

redis-server –service-install redis.windows.conf –loglevel verbose
–service-name Redis6379

打响后,开启服务即可:

 NoSQL 2

2.2核心配置

Redis如mysql数据库一样,可以协理中心数据库配置,而且配置格局特别大概。将原有Redis安装文件再复制一份,打开Config文件,修改对应slaveof配置即可:

 NoSQL 3

以地点提到的指令注册服务,运行该从数据库:

NoSQL 4

2.3密码和权限配置

Redis默认是一向不密码的,为了多少的安全性需要我们友好启动权限控制和密码配置等。

2.3.1装置访问权限

打开config文件,找到bind关键字,修改其中绑定的IP即可:

 NoSQL 5

2.3.2装置密码

一致打开config文件,找到requirepass关键字,将对应部分改动为指定密码:

 NoSQL 6

在意,假使我们对主数据库设定了密码,那么slave数据库上在监听主数据库的部署中也要增长对应的密码:

 NoSQL 7

2.4Redis可视化管理工具

此间我们采取RedisDesktopManager来保管Redis数据库。在官网上(https://redisdesktop.com/download)下载完该工具后,本地安装后连接至数据库上:

NoSQL 8 

单击主数据库文件中的redis-cli.exe,输入测试命令:

 NoSQL 9

在输入获取Value的命令,发现已经成功:

 NoSQL 10

再者,在可视化工具中能看到,主从数据库中均已联名:

 NoSQL 11

3.Java操作

3.1依靠环境

应用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip。

如果需要动用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip。

3.2常用据项目应用

Redis中可以储存各样数据类型,不同数据类型有其拔取情形,具体各数据类型的利用在操作文档中均能招来(http://redisdoc.com/index.html):

 NoSQL 12

NoSQL 13

 这里以几个常用项目作为介绍。

3.2.1连接

 NoSQL 14

3.2.2String

String是最常用的一种数据类型,普通的key/value存储都足以归为此类,value其实不仅是String,也可以是数字:比如想知道几时封锁一个IP地址(访问超越三次)。INCRBY命令让这些变得很容易,通过原子递增保持计数。  

 NoSQL 15

 NoSQL 16

NoSQL 17

3.2.3List

在Redis中,List类型是依据插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们得以在其头部(left)和尾巴(right)添加新的因素。在插入时,假诺该键并不设有,Redis将为该键成立一个新的链表。与此相反,假使链表中具有的因素均被移除,那么该键也将会被从数据库中剔除。List中可以涵盖的最大要素数量是4294967295。
从要素插入和删除的频率视角来看,假使我们是在链表的两边插入或删除元素,这将会是丰盛迅猛的操作,虽然链表中曾经储存了百万条记下,该操作也可以在常量时间内形成。可是需要验证的是,如果元素插入或删除操作是效率于链表中间,这将会是卓殊低效的。相信对于有一流数据结构基础的开发者而言,这一点并不难了解。

 NoSQL 18

NoSQL 19

3.2.4Set

在Redis中,大家可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也得以在该项目标数据值上实施添加、删除或判断某一因素是否存在等操作。需要注明的是,那个操作的小运复杂度为O(1),即常量时间内做到次操作。Set可含蓄的最大要素数量是4294967295。
和List类型不同的是,Set集合中不容许出现重复的元素,这或多或少和C++标准库中的set容器是完全相同的。换句话说,倘使反复增长相同元素,Set将官仅保留该因素的一份拷贝。和List类型相比,Set类型在效率上还存在着一个不行重要的风味,即在劳务器端完成多个Sets之间的聚合总括操作,如unions、intersections和differences。由于那多少个操作均在服务端完成,因而效用极高,而且也省去了汪洋的网络IO开销。

 NoSQL 20

NoSQL 21

3.2.5Hash

咱们可以将Redis中的Hashes类型看成具有String Key和String
Value的map容器。所以该类型非凡适合于存储值对象的信息。如Username、Password和Age等。假诺Hash中带有很少的字段,那么该品种的多少也将仅占据很少的磁盘空间。每一个Hash可以储存4294967295个键值对。

 NoSQL 22

NoSQL 23

4.redis的持久化问题

Redis提供了以下两种持久化格局:

a.RDB持久化:
该机制是指在指定的时间距离内将内存中的多寡集快照写入磁盘。   
b.AOF持久化:

该机制将以日记的款型记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来再一次构建数据库,以保证启动后数据库中的数据是共同体的。

c.无持久化:

大家得以经过配备的法子禁用Redis服务器的持久化效用,这样咱们就足以将Redis视为一个职能加强版的memcached了。

d.同时利用AOF和RDB。

5.Redis与GIS的结缘:GEO数据类型

Redis3.2版本中追加了对GEO(地理地方)的支撑。近年来其提供了以下二种操作方法:

a.geoadd:扩张某个地理地点的坐标。

b.geopos:获取某个地理地方的坐标。

c.geodist:获取几个地理地点的离开。

d.georadius:按照给定地理地点坐标获取指定范围内的地理地点集合。

e.georadiusbymember:遵照给定地理地方获取指定范围内的地理地点集合。

f.geohash:获取某个地理地点的geohash值。

因为其面向的为主流互联网环境,所以其援助的地理坐标系指定为WGS84坐标系,其中的geohash编码算法与自己在事先的博客中所提到的同等:WebGIS中GeoHash编码的钻研和扩大(http://www.cnblogs.com/naaoveGIS/p/5164187.html)。除了我们自己写代码完成该算法,也有已经开源封装好的源码:https://github.com/kungfoo/geohash-java。

 

                                                                     
—–欢迎转载,但保留版权,请于分明处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                         
假诺你认为本文确实帮衬了您,可以微信扫一扫,举行小额的打赏和鼓励,谢谢
^_^

                                                                                                  
               NoSQL 24

网站地图xml地图