一文详解NOsql数据库Redis

栏目: 数据库 · 发布时间: 6年前

内容简介:一图详解DB的分支产品

一图详解DB的分支产品

一文详解NOsql数据库Redis

Nosql数据库介绍

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

专注于key-value查询的 redismemcached 、ttserver

解决以下问题:

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

Nosql数据库的应用环境

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

Nosql软件的分类与特点

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

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

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

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

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

一文详解NOsql数据库Redis

2)列存储数据库(HBase)

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

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

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

  4. 功能相对局限

一文详解NOsql数据库Redis

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

  1. 用于WEB应用较多

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

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

一文详解NOsql数据库Redis

4)图形数据库(Graph)

  1. 社交网络应用较多

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

常用的Nosql数据库介绍

1)memcached

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

特点:

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

官方网站:http://memcached.org

2)memcacheDB

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

特点:

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

官方网站:http://memcachedb.org/benchmark.html

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

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

redis持久化数据服务

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

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

redis持久服务的特点

  1. key-value键值类型存储系统

  2. 支持数据可靠存储

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

  4. 恢复比较慢

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

  6. 适合小数据高速读写访问

redis存储系统优、缺点:

  1. 可以持久化存储数据

  2. 支持每秒10W的读写频率

  3. 支持丰富的数据类型

  4. 所有操作都是原子性的

  5. 支持异机主从复制

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

  7. 不同命令延迟差别大

官方网站:http://www.redis.io

redis持久化介绍

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

一文详解NOsql数据库Redis

redis应用场景

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

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

redis的安装

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

wget http://download.redis.io/releases/redis-2.8.24.tar.gz
[root@redis-m tools]#tar zxf redis-2.8.24.tar.gz
[root@redis-m tools]#cd redis-2.8.24
[root@redis-m redis-2.8.24]#make
[root@redis-m redis-2.8.24]#make PREFIX=/application/redis-2.8.24 install
[root@redis-m redis-2.8.24]#ln -s /application/redis-2.8.24 /application/redis
[root@redis-m tools]# 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-m tools]# echo "PATH=/application/redis/bin:$PATH">>/etc/profile
[root@redis-m tools]# source /etc/profile
[root@redis-m tools]# which redis-server
/application/redis/bin/redis-server
复制代码

查看帮助文档

[root@redis-m 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
复制代码

启动服务

[root@redis-m ~]# cd /application/redis/   
[root@redis-m redis]# ll
total 4
drwxr-xr-x 2 root root 4096 Mar 22 04:50 bin
[root@redis-m redis]# mkdir conf
[root@redis-m redis]# cp /download/tools/redis-2.8.24/redis.conf ./conf/
[root@redis-m 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
[root@redis-m 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表示内核允许最大限度的的使用内存

关闭服务命令

[root@redis-m 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集群相关的知识可参考前面的文章

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


以上所述就是小编给大家介绍的《一文详解NOsql数据库Redis》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程卓越之道

编程卓越之道

海德 / 张菲 / 电子工业出版社 / 2007-4 / 69.00元

《编程卓越之道第二卷:运用底层语言思想编写高级语言代码》是《编程卓越之道》系列书的第二卷,将探讨怎样用高级语言(而非汇编语言)编程得到高效率机器代码。在书中,您可以学到如何分析编译器的输出,以便检验代码的所作所为,从而得到高质量的机器码;了解编译器为常见控制结构生成的典型机器指令,以便在编写高级语言程序时选用恰当的语句;掌握编译器将各种常量和变量类型转换成机器数据的方法,以便于使用这些数据写出又快......一起来看看 《编程卓越之道》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具