热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nosql数据库服务之redis

Nosql数据库服务之redis收录于话题#Redis专辑5个一图详解DB的分支产品Nosql数据库介绍是一种非关系型数据库服务,它能解决常规数据库的并发能力,比如传统的数据库的I

Nosql数据库服务之redis

收录于话题
#Redis专辑
5个

一图详解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)
用于内容缓存,适合负载并扩展大的数据集
数据类型是一系列的键值对
有快速查询功能,但存储数据少结构化
对事务的支持不好,数据库故障产生时不可进行回滚
技术分享图片
2)列存储数据库(HBase)
用于分布式的文件系统
以列簇式存储,将同一列数据存在一起
查找速度快,可扩展强,更容易进行分布式扩展
功能相对局限
技术分享图片
3)面向文件的数据库(mongoDB)
用于WEB应用较多
数据类型是一系列键值对
查)询性能不高,没有统一的查询语法
技术分享图片
4)图形数据库(Graph)
社交网络应用较多
不容易做分布式的集群方案
技术分享图片


常用的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持久服务的特点


key-value键值类型存储系统
支持数据可靠存储
单进程单线程高性能服务器
恢复比较慢
单机qps(秒并发)可以达到10W
适合小数据高速读写访问
redis存储系统优、缺点:
可以持久化存储数据
支持每秒10W的读写频率
支持丰富的数据类型
所有操作都是原子性的
支持异机主从复制
内存管理开销大(低于物理内存的3/5)
不同命令延迟差别大
官方网站: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
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集群生产环境高可用方案实战过程
技术分享图片


推荐阅读
  • Redis: 高效的键值存储系统
    Redis是一款遵循BSD许可的开源高性能键值存储系统,它不仅支持多种数据类型的存储,还提供了数据持久化和复制等功能,显著区别于其他键值缓存解决方案。 ... [详细]
  • 本文介绍了Linux内核中TCP的三种接收队列:Prequeue、sk_receive_queue和Backlog。这些队列在数据包处理过程中扮演着重要角色,帮助提高系统性能和效率。 ... [详细]
  • 本文详细介绍了Python中的生成器表达式、列表推导式、字典推导式及集合推导式等,探讨了它们之间的差异,并提供了丰富的代码示例。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • javascript——对象的概念——函数 1 (函数对象的属性和方法)
    一、创建函数函数是一种对象:Function类是对象,可以通过Function实例化一个函数,不过最多的还是利用function来创建函数。方式一:利用Function类来实例化函 ... [详细]
  • IEC60825激光产品安全标准详解
    随着激光技术在全球范围内的广泛应用,尤其是激光投影显示技术的兴起,了解和遵守相关的安全标准变得尤为重要。本文将详细介绍IEC60825激光产品安全标准及其重要性。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
  • 本文探讨了Java编程语言中常用的两个比较操作符==和equals方法的区别及其应用场景。通过具体示例分析,帮助开发者更好地理解和使用这两个概念,特别是在处理基本数据类型和引用数据类型的比较时。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文详细介绍了如何使用Rufus工具制作一个兼容UEFI启动模式的Windows Server 2008 R2安装U盘,包括必要的软件和步骤。 ... [详细]
  • 本文介绍如何使用 Python 计算两个时间戳之间的时间差,并将其转换为毫秒。示例代码展示了如何通过 `time` 和 `datetime` 模块实现这一功能。 ... [详细]
  • 使用REM和媒体查询实现响应式布局
    本文介绍如何利用REM单位和媒体查询(Media Queries)来创建适应不同屏幕尺寸的网页布局。通过具体示例,展示在不同屏幕宽度下如何调整页面元素的样式。 ... [详细]
author-avatar
Yvette-XY
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有