,DB分支产品详解Nosql数据库介绍是一种非关系型数据库服务,可以解决传统数据库的并发能力,如传统数据库的IO和性能瓶颈,以及它也是关系型数据库的一个补充,具有比较高的效率和高性能。以key-value查询为主的redis、memcached、ttserver解决了以下问题:1)数据库的高并发读写需求2)大数据的高效存储和访问需求3)高扩展性和高可用性需求Nosql数据库应用环境1)数据模型比较简单2)需要更灵活的IT系统3)对数据库有更高的性能要求4)不需要高度的数据一致性5)对于给定的KEY,更容易映射复杂值环境Nosql软件分类及特点1)key-value键值存储数据库(redis、memcached)用于内容缓存,适用于大数据集的加载和扩展。数据类型是一系列键值对,具有快速查询功能,但数据存储少,对事务的结构支持不好,数据库故障时无法回滚,更容易进行分布式扩展。功能比较有限。3)WEB应用中使用的面向文件的数据库(mongoDB)。许多数据类型是一系列键值对。查询性能不高,没有统一的查询语法。4)图数据库(Graph)社交网络应用较多,做分布式集群方案并不容易。常用Nosql数据库介绍1)memcached是一个开源的分布式内存对象的高性能缓存系统特点:1.安装部署简单2.支持高并发,高性能3.可以通过程序或者负载均衡实现分布式4.只有内存缓存,重启服务数据丢失官网:http://memcached.org2)memcacheDB是新浪基于memcached开发的一个开源项目,具有事务恢复功能特点:1.高并发读写2.高效存储3.高可用的数据存储2.适合持久化存储方案memcacheDB3,memcached适合2000万数据量以内的小数据,redis适合大数据量。Redis持久化数据服务REmoteDIctionaryserver(redis)是一种基于key-value键值对的持久化数据库存储系统支持更多类型的数据存储,包括字符串、列表、集合等,是一种持久化的缓存服务,周期性的更新数据写入磁盘,将修改操作记录追加到文件中进行记录。它还支持主从同步模式。它是一个用C语言编写的开源软件,支持网络、内存持久化日志类型、key-value数据库redis持久化服务。Key-value键值类型存储系统支持可靠的数据存储单进程单线程高性能服务器恢复相对较慢单机qps(二次并发)可达10W适合小数据的高速读写访问Redis存储系统优缺点:可持久化存储数据支持每秒10W读写频率支持丰富的数据类型所有操作都是原子的支持不同机器的主从复制内存管理开销高(不到物理内存的3/5)不同的命令延迟差别很大官网:http://www.redis.ioredis持久化介绍Redis将数据存储在内存中,通过快照和日志实现持久化存储。前者性能高,数据丢失少,后者则相反。Redis应用场景MYSQL+memcached网站架构问题:数据量大需要拆扩,数据一致性是个问题1)最好的应用场景是内存服务2)作为memcached的替代方案3)存在问题对数据一致性有一定要求但不高的业务4)需要更多数据类型支持的业务5)需要主从同步和负载均衡的业务安装redis需要主从同步配置,可以实现故障转移和禁用数据对主人的执着。从上面的配置来看,内存应该够大wgethttp://download.redis.io/releases/redis-2.8.24.tar.gz[root@redis-mtools]#tarzxfredis-2.8.24.tar.gz[root@redis-mtools]#cdredis-2.8.24[root@redis-mredis-2.8.24]#make[root@redis-mredis-2.8.24]#makePREFIX=/application/redis-2.8.24install[root@redis-mredis-2.8.24]#ln-s/application/redis-2.8.24/application/redis[root@redis-mtools]#tree/application/redis/application/redis`--bin|--redis-benchmark#性能测试工具|--redis-check-aof#检测更新日志|--redis-check-dump#检查本地数据库rdb文件|--redis-cli#命令行客户端操作工具|--redis-sentinel->redis-server`--redis-server#服务启动程序配置环境变量[root@redis-mtools]#echo"PATH=/application/redis/bin:$PATH">>/etc/profile[root@redis-mtools]#source/etc/profile[root@redis-mtools]#whichredis-server/application/redis/bin/redis-server查看帮助文档[root@redis-mtools]#redis-server--helpUsage:./redis-server[/path/to/redis.conf][options]./redis-server-(readconfigfromstdin)./redis-server-vor--version./redis-server-hor--help./redis-server--test-memory<兆字节>示例:./redis-server(runtheserverwithdefaultconf)./redis-server/etc/redis/6379.conf./redis-server--port7777./redis-server--port7777--slaveof127.0.0.18888./redis-server/etc/myredis.conf--loglevelverbose启动服务[root@redis-m~]#cd/application/redis/[root@redis-mredis]#lltotal4drwxr-xr-x2rootroot4096Mar2204:50bin[root@redis-mredis]#mkdirconf[root@redis-mredis]#cp/download/tools/redis-2.8.24/redis.conf./conf/[root@redis-mredis]]#redis-server/application/redis/conf/redis.conf&[6072]22Mar05:00:51.373#Serverstarted,Redisversion2.8.24[6072]22Mar05:00:51.374#WARNINGovercommit_memoryissetto0!Backgroundsavemayfailunderlowmemorycondition.Tofixthisissueadd'vm.overcommit'_memory=1to/etc/sysctl.confandthenrebootorrunthecommand'sysctlvm.overcommit_memory=1'forthistotakee影响。#当内存不足时,数据加载到磁盘可能会失败,可以使用命令解决或修改配置文件[6072]22Mar05:00:51.375#WARNING:TheTCPbacklogsettingof511cannotbeenforcedbecause/proc/sys/net/core/somaxconnissettothelowervalueof128.[6072]22Mar05:00:51.375*Theserverisnowreadytoacceptconnectionsonport6379[root@redis-mredis]#lsof-i:6379COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEredis-ser6072root4uIPv6242710t0TCP*:6379(LISTEN)redis-ser6072root5uIPv4242730t0TCP*:6379(LISTEN)vm.overcommit_memory0表示用户空间请求更多内存时,内核尝试估计剩余的可用内存。1表示内核允许最大使用内存关闭服务命令[root@redis-mredis]#redis-clishutdown[6072]22Mar05:09:32.699#Userrequestedshutdown...[6072]22Mar05:09:32.699*在退出前保存最终的RDB快照。[6072]22Mar05:09:32.710*DBsavedondisk[6072]22Mar05:09:32.711#Redis现在准备退出,再见...[1]+Doneredis-server/application/redis/conf/redis.conf
