专栏首页民工哥技术之路Nosql数据库服务之redis

Nosql数据库服务之redis

一图详解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)

  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、仅为内存缓存,重启服务数据丢失

官方网站: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将数据存储于内存中,通过快照、日志两种方式实现持久化存储,前者性能高,会有数据丢失的情况,后者相反。

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

本文分享自微信公众号 - 民工哥技术之路(jishuroad),作者:民工哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis性能指标监控!你知几何?

    redis连接了多少客户端 通过观察其数量可以确认是否存在意料之外的连接。如果发现数量不对劲,就可以使用lcient list指令列出所有的客户端链接地址来确定...

    民工哥
  • 硬核干货!Redis 分布式集群部署实战

    分布式主从规则为,前三个实例节点是主,对应的后面三个实例节点为从节点,如果replicas 2,那就多加3个实例节点

    民工哥
  • 生产Mysql数据库数据恢复实战过程

    mysql数据库一主多从的架构,主写从读进行读写分离,专用从库做数据备份,每天0点全备一次,12点增量备份一次,初始阶段数据量很小的情况按此方案,后续数...

    民工哥
  • Redis Cluster

    为何要搭建Redis集群。Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着Redis不适合存储大数据,适合存储大数据的是Hadoop生态...

    一点博客
  • [喵咪Redis]Redis安装与介绍

    [喵咪Redis]Redis安装与介绍 ? 前言 哈喽大家好啊,这次要来和大家一起来了解学习Redis的一系列技术,最终目的是搭建一个高可用redis集群自动负...

    喵了个咪233
  • PHP+Redis 商品超卖

    码缘
  • Linux下 php7安装redis的方法

    以上所述是小编给大家介绍的Linux下 php7安装redis的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家...

    砸漏
  • Linux下 php7安装redis的办法

    ??? 进入安装目录打开 cd redis-stable/src/redis-cli

    砸漏
  • CentoS6.5环境下redis4.0.1(stable)安装和主从复制配置方法

    本文实例讲述了CentoS6.5环境下redis4.0.1(stable)安装和主从复制配置方法。分享给大家供大家参考,具体如下:

    砸漏
  • Linux平台安装redis及redis扩展的方法

    本文实例讲述了Linux平台安装redis及redis扩展的方法。分享给大家供大家参考,具体如下:

    砸漏

扫码关注云+社区

领取腾讯云代金券