一篇文章详解NOsql数据库Redis

一图详解DB的分支产品

osql数据库介绍

是一种非关系型数据库服务,它能解决常规数据库的并发能力,比如传统的数据库的IO与性能的瓶颈,同样它是关系型数据库的一个补充,有着比较好的高效率与高性能。

专注于key-value查询的redis、memcached、ttserver

解决以下问题:

1)对数据库的高并发读写需求
2)大数据的高效存储和访问需求
3)高可扩展性和高可用性的需求
Nosql数据库的应用环境

1)数据模型比较简单
2)需要灵活性更强的IT系统
3)对数据库的性能要求较高
4)不需要高度数据一致性
5)对于给定KEY,比较容易映射复杂值的环境
Nosql软件的分类与特点

1)key-value键值存储数据库(redis、memcached)

1.用于内容缓存,适合负载并扩展大的数据集

2.数据类型是一系列的键值对

3.有快速查询功能,但存储数据少结构化

4.对事务的支持不好,数据库故障产生时不可进行回滚

2)列存储数据库(HBase)

1.用于分布式的文件系统

2.以列簇式存储,将同一列数据存在一起

3.查找速度快,可扩展强,更容易进行分布式扩展

4.功能相对局限

3)面向文件的数据库(mongoDB)

1.用于WEB应用较多

2.数据类型是一系列键值对

3.查询性能不高,没有统一的查询语法

4)图形数据库(Graph)

1.社交网络应用较多

2.不容易做分布式的集群方案

常用的Nosql数据库介绍

1)memcached

是一个开源高性能的,具有分布式内存对象的缓存系统

特点:

1、安装布署简单
2、支持高并发、高性能
3、通过程序或负载均衡可以实现分布式
4、仅为内存缓存,重启服务数据丢失

2)memcacheDB

是新浪基于memcached开发的一个开源项目,具备了事务恢复功能

特点:

1、高并发读写
2、高效存储
3、高可用数据存储

生产环境如何选择Nosql数据库

1、最常规的缓存应用,memcached最合适
2、持久化存储方案memcacheDB
3、2000万以内数据量的小数据用memcached
4、大数据量可以用redis
redis持久化数据服务

REmote DIctionary server(redis)是一个 基于key-value键值对的持久化数据库 存储系统,对支持数据存储类型更多,包括字符串、列表、集合等

是一种 持久化缓存服务 ,会周期的把更新的数据写入磁盘以及把修改操作记录追加到文件里记录下来,还 支持主从同步模式 ,是一个开源的基于C语言编写的,支持网络、内存可持久化的日志型、key-value数据库

redis持久服务的特点

key-value键值类型存储系统

支持数据可靠存储

单进程单线程高性能服务器

恢复比较慢

单机qps(秒并发)可以达到10W

适合小数据高速读写访问

redis存储系统优、缺点:

可以持久化存储数据

支持每秒10W的读写频率

支持丰富的数据类型

所有操作都是原子性的

支持异机主从复制

内存管理开销大(低于物理内存的3/5)

不同命令延迟差别大

redis持久化介绍

redis将 数据存储于内存中 ,通过 快照、日志 两种方式实现持久化存储,前者性能高,会有数据丢失的情况,后者相反。

redis应用场景

MYSQL+memcached网站架构的问题:数据量大就需要拆表,需要扩容,数据一致性是个问题

1)最佳应用场景就是内存服务
2)作为memcached替代方案
3)对数据一致性有一定要求但不高的业务
4)需要更多数据类型支持的业务
5)需要主从同步及负载均衡的业务
redis的安装

要进行主从同步配置,可以实现故障切换,主上禁用数据持久化,从上配置,内存要够大

wget http://download.redis.io/releases/redis-2.8.24.tar.gz
[[email protected] tools]#tar zxf redis-2.8.24.tar.gz
[[email protected] tools]#cd redis-2.8.24
[[email protected] redis-2.8.24]#make
[[email protected] redis-2.8.24]#make PREFIX=/application/redis-2.8.24 install
[[email protected] redis-2.8.24]#ln -s /application/redis-2.8.24 /application/redis
[[email protected] tools]# tree /application/redis
/application/redis
-- bin<br/>|-- redis-benchmark #性能测试工具<br/>|-- redis-check-aof #检测更新日志<br/>|-- redis-check-dump #检查本地数据库rdb文件<br/>|-- redis-cli #命令行客户端操作工具<br/>|-- redis-sentinel -&gt; redis-server<br/>-- redis-server #服务的启动程序

配置环境变量

[[email protected] tools]# echo "PATH=/application/redis/bin:$PATH">>/etc/profile
[[email protected] tools]# source /etc/profile
[[email protected] tools]# which redis-server
/application/redis/bin/redis-server

查看帮助文档

[[email protected] tools]# redis-server --help
Usage: ./redis-server [/path/to/redis.conf] [options]
./redis-server - (read config from stdin)
./redis-server -v or --version
./redis-server -h or --help
./redis-server --test-memory <megabytes>
Examples:
./redis-server (run the server with default conf)
./redis-server /etc/redis/6379.conf
./redis-server --port 7777
./redis-server --port 7777 --slaveof 127.0.0.1 8888
./redis-server /etc/myredis.conf --loglevel verbose

启动服务

[[email protected] ~]# cd /application/redis/
[[email protected] redis]# ll
total 4
drwxr-xr-x 2 root root 4096 Mar 22 04:50 bin
[[email protected] redis]# mkdir conf
[[email protected] redis]# cp /download/tools/redis-2.8.24/redis.conf ./conf/
[[email protected] redis]# redis-server /application/redis/conf/redis.conf &
[6072] 22 Mar 05:00:51.373 # Server started, Redis version 2.8.24
[6072] 22 Mar 05:00:51.374 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add‘vm.overcommit_memory = 1‘ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1‘ for this to take effect.

#内存不足的时候,数据加载到磁盘可能失效,可以使用命令解决或修改配置文件

[6072] 22 Mar 05:00:51.375 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
[6072] 22 Mar 05:00:51.375 The server is now ready to accept connections on port 6379
[[email protected] redis]# lsof -i :6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 6072 root 4u IPv6 24271 0t0 TCP
:6379 (LISTEN)
redis-ser 6072 root 5u IPv4 24273 0t0 TCP *:6379 (LISTEN)
vm.overcommit_memory

0表示用户空间请求更多内存时,内核尝试估算出余下可用内存
1表示内核允许最大限度的的使用内存

关闭服务命令

[[email protected] redis]# redis-cli shutdown
[6072] 22 Mar 05:09:32.699 # User requested shutdown...
[6072] 22 Mar 05:09:32.699 Saving the final RDB snapshot before exiting.
[6072] 22 Mar 05:09:32.710
DB saved on disk
[6072] 22 Mar 05:09:32.711 # Redis is now ready to exit, bye bye...
[1]+ Done redis-server /application/redis/conf/redis.conf

Redis集群生产环境高可用方案实战过程

原文地址:http://blog.51cto.com/13883927/2155377

时间: 2024-07-30 02:59:35

一篇文章详解NOsql数据库Redis的相关文章

详解NoSQL数据库使用实例

一.NoSQL基础知识 1.关于NoSQL 在"NoSQL"一词,实际上是一个叫Racker的同事创造的,当约翰埃文斯埃里克要组织一次活动来讨论开源的分布式数据库.这个名称和概念都由此而来. 有些人反对NoSQL术语,因为它听起来像我们定义自己是什么.在一定程度,但长期仍然是有价值的,因为当一个关系数据库是唯一的工具,你知道,每一个问题,看起来像一个大拇指. NoSQL是让人们知道有其他选择哪里.但我们并不反对关系数据库,因为当这确实是工作的最佳工具. 一个与NoSQL名称真正关注的是

[下篇] 一篇文章详解性能评估难点

在这个娱乐明星频频出轨.奇葩热文爆炸的时代,你却能抽空关注IT技术,请为你这份难能可贵和对技术的执着点个赞吧!请搜索"ICT_Architect"关注微信公众号,获取更多精彩内容. 在上篇文章[收藏] 深入浅出存储性能评估方法论中,我们介绍了性能评估相关概念和原理,但是在项目实战中,要根据业务真实诉求给出切合实际的性能配置,还需要针对业务模型进行最佳实践分析和洞察,从主机端口.存储系统.后端磁盘等端到端进行分析和评估,在本文中把常见的性能评估过程中的难点依次罗列,希望对大家有所帮助.

.Net使用Redis详解之ServiceStack.Redis(七)

原文:.Net使用Redis详解之ServiceStack.Redis(七) 序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中会对list的阻塞功能和事务的运用做二个案例,进行记录学习. Redis官方推荐的.NET驱动类库为Service.Stack.Redis.然而网上对这个类库的中文文档不是很全面与合理,这篇文章主要就对这个类库做注释展现.不足遗漏之处还望见谅,海涵. .Net使用Redis是非常方便与快捷与

mongo 3.4分片集群系列之六:详解配置数据库

这个系列大致想跟大家分享以下篇章(我会持续更新的(^ω^)): 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4.mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 区域 5.mongo 3.4分片集群系列之五:详解平衡器 6.mongo 3.4分片集群系列之六:详解配置数据库 7.mongo 3.4分片集群系列之七:配置数

详解MariaDB数据库的事务

1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句中已经执行的语句会回滚到这组SQL语句执行之前的状态. 事务处理,可以确保非事务性单元的多个操作都能成功完成,否则不会更新数据资源. 数据库默认事务是自动提交的, 也就是发一条 sql 它就执行一条.如果想多条 sql 放在一个事务中执行,则需要使用事务进行处理. 当我们开启一个事务,并且没有提交,

NoSql数据库Redis的在ubuntu下的部署使用

一.Redis的简介: NoSql 及No Only SQL,是高并发,超大数据存在,不同于关系型数据库.拥有:非关系型,分布式,开源的,可水平扩展. Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子

详解MongDB数据库

NoSQL 若杀死进程应使用pkill 数据设计模式:分布式.非关系型.不提供ACID 特性:简单数据模型.源数据和应用数据分离.弱一致性 优势: 避免不必要的复杂性 高吞吐量, 高 水平扩展能力和低端硬件集群 不使用对象-关系映射 缺点: 不支持ACID 功能过于简单 没有统一的数据查询模型 特点: 处理差大量的数据 运行再便宜的pc服务器集群上 击碎了性能瓶颈 使用场景: 1.对数据并发读写 2.对海量数据的高效率存储与访问 3.对数据的高可扩展性和高可用性(分布式) NOSQL的数据存储模

【自考】数据库系统原理(二)——详解(数据库设计和ER模型)

万事万物都有一个生存周期,当然数据库系统也不例外! 数据库设计和ER模型这一章主要是依据数据库系统生存周期,对其中的设计阶段展开来进行讲解的. 我们先来看看数据库系统的生存周期: 如图所示,数据库系统生存周期划分为五个阶段:规划,需求分析,设计,实现,运行维护.其中设计阶段包括,概念,逻辑,物理三个方面的设计. 后面两节的内容主要是针对设计阶段的概念设计和逻辑设计以及从概念设计到逻辑设计的转换来展开的. 一.概念设计(ER模型)    第一章里讲过了数据抽象的四个模型:概念数据模型,逻辑数据模型

.Net使用Redis详解之ServiceStack.Redis

序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中会对list的阻塞功能和事务的运用做二个案例,进行记录学习. Redis官方推荐的.NET驱动类库为Service.Stack.Redis.然而网上对这个类库的中文文档不是很全面与合理,这篇文章主要就对这个类库做注释展现.不足遗漏之处还望见谅,海涵. .Net使用Redis是非常方便与快捷与简单的,下面就让我展示下吧. 这里有必要说一下,如果你对Redis 中的基本对