Nosql数据库服务之redis

news2024/11/17 9:50:05

Nosql数据库服务之redis

一图详解DB的分支产品

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

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

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

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

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

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

2)列存储数据库(HBase)

列存储数据库(HBase)

  • 用于分布式的文件系统

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

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

  • 功能相对局限

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

面向文件的数据库(mongoDB)

  • 用于WEB应用较多

  • 数据类型是一系列键值对

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

4)图形数据库(Graph)

图形数据库(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持久化数据服务

redis持久服务的特点

  • key-value键值类型存储系统

  • 支持数据可靠存储

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

  • 恢复比较慢

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

  • 适合小数据高速读写访问

redis存储系统优、缺点

  • 可以持久化存储数据

  • 支持每秒10W的读写频率

  • 支持丰富的数据类型

  • 所有操作都是原子性的

  • 支持异机主从复制

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

  • 不同命令延迟差别大

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

redis持久化介绍

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

redis持久化介绍

redis应用场景

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

1)最佳应用场景就是内存服务

2)作为memcached替代方案

3)对数据一致性有一定要求但不高的业务

4)需要更多数据类型支持的业务

5)需要主从同步及负载均衡的业务

redis的安装

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

[root@redis-m tools]# 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/984923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSAPP的Lab学习——Archlab(Architecture Lab)

文章目录 前言一、A部分sum .ys&#xff1a;迭代求和链表元素写一个Y86-64的程序和。rsum .递归求和链表元素copy.ys 复制将源块复制到目标块 二、B部分三、C部分实现iaddq指令 总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招。刚刚看完CSAPP&#xff0c;真是一本神…

Android发布依赖到 Jitpack

前言 我们在日常开发中&#xff0c;经常会用到第三方开源的库文件&#xff0c;有的来自JCenter&#xff0c;Maven Central&#xff0c;google等。但是随着JCenter的弃用&#xff0c;现在用的最多的还是Maven Central&#xff0c;google。今天我们就自己亲自发布一个依赖。 现…

三秋农忙,自动驾驶农机保驾护航

“三秋”&#xff08;收获、播种、整地&#xff09;是一年中重要而忙碌的农事季节&#xff0c;水稻、棉花、玉米等农作物收获时期&#xff0c;也是小麦、蔬菜等秋种的好时间&#xff0c;还是各类农作物进入秋管的重要期。 随者农业科技发展&#xff0c;北斗导航农机自动驾驶系…

Json“牵手”唯品会商品详情数据方法,唯品会商品详情API接口,唯品会API申请指南

唯品会是中国最大的会员制特卖电商平台之一&#xff0c;于2008年创立&#xff0c;唯品会主营业务为互联网在线销售品牌折扣商品&#xff0c;涵盖名品服饰鞋包、美妆、母婴、居家等各大品类2。唯品会采取供应链直采模式&#xff0c;与全球3000多家品牌及供应商合作&#xff0c;直…

网络货运平台服务模式,你真的了解吗?

在当今的“互联网”时代&#xff0c;网络货运平台已经成为物流行业中的重要力量。 长期以来&#xff0c;货物运输行业处于“小、散、乱、差”的状态&#xff0c;存在信息不对称、运输环节层层分包等问题。数字时代到来&#xff0c;各行各业都在进行数字升级&#xff0c;物流行…

德国金融监管机构网站遭遇大规模DDoS攻击后“瘫痪”

德国波恩的BaFin大楼 BaFin是负责监督和监管德国金融机构和市场的金融监管机构&#xff0c;其职责是确保德国金融体系的稳定性、完整性和透明度。 此外&#xff0c;BaFin 的网站还为企业和消费者提供银行、贷款和财产融资等方面的信息。它还提供消费者帮助热线和举报人信息共…

分享一些领英添加客户的话术

昨天一个朋友很开心地跟我分享她在领英找到的一个非常优质的客户&#xff0c;她说这个客户很忠诚&#xff0c;基本上每年都会回来找她下单&#xff0c;这两年持续的下单&#xff0c;也没有对比价格&#xff0c;特别感恩遇见这样的客户。 也许是行业和产品不同&#xff0c;我领…

[C++]杨辉三角

目录 题目 解题思路 代码实现 获取数字 打印函数 主函数 全部代码 运行结果 题目 给定一个非负整数numRows &#xff0c;生成「杨辉三角」的前numRows行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 解题思路 第k列的第i个数字的值第k-1列的(…

合宙Air724UG LuatOS-Air LVGL API控件-加载器(Spinner)

加载器(Spinner) 示例代码 spinner lvgl.spinner_create(lvgl.scr_act(), nil) lvgl.obj_set_size(spinner, 100, 100) lvgl.obj_align(spinner, nil, lvgl.ALIGN_CENTER, 0, 0) 创建 通过 lvgl.spinner_create 就可创建一个加载器&#xff0c;本身自带动画效果。 spinner …

PageHelper分页原理解析

大家好&#xff0c;我是Leo! 今天给大家带来的是关于PageHelper原理的解析&#xff0c;最近遇到一个SQL优化的问题&#xff0c;顺便研究了一下PageHelper的原理&#xff0c;毕竟也是比较常用&#xff0c;源码也比较好看的懂&#xff0c;如果感兴趣的小伙伴可以跟着过程去DEBUG源…

【优选算法】—— 前缀和算法

前言&#xff1a; 本期&#xff0c;我将要带大家学习的是有关前缀和算法的学习&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;什么是前缀和算法 &#xff08;二&#xff09;题目讲解 1、【模板】前缀和 2、【模板】二维前缀和 3、 和可被K整除的…

简明SQL截断和偏移指南:掌握LIMIT实现数据筛选

以下是用到的表。 截断 LIMIT 用于限制查询结果返回的行数&#xff0c;即最多返回多少行数据。 例如&#xff0c;返回前两行数据。 例如&#xff0c;从第二个数据开始返回两条数据&#xff08;从0开始计算&#xff09;。 偏移 OFFSET 用于指定查询结果的起始位置&#xff0c…

园区宿舍水电表改造解决方案

随着社会经济的快速发展&#xff0c;人们对生活品质的要求不断提高&#xff0c;园区宿舍作为众多企业员工和学生的居住场所&#xff0c;水电资源的合理使用和节约越来越受到关注。为了更好地满足人们对生活品质的需求&#xff0c;提高水电资源的利用效率&#xff0c;园区宿舍水…

PHP8中查询数组中指定元素-PHP8知识详解

php是使用最广泛的web编程语言&#xff0c;数组是一个数据集合&#xff0c;数组是一种非常常用的数据类型。在操作数组时&#xff0c;有时我们需要查询数组中是否有某个指定元素。在实际的程序开发中&#xff0c;我们用到了下列方法来查询数组中指定的元素&#xff1a;使用arra…

postman返回值乱码

描述&#xff1a; 在使用postman测试接口的时候&#xff0c;结果正常返回&#xff0c;但是乱码了&#xff0c;这个一般都是编码集设定的问题,后端接口是使用的springmvc Controller public class TestController(){RequestMapper("/test8")ResponseBodypublic Strin…

C++QT day2

作业 1> 封装一个结构体&#xff0c;结构体中包含一个私有数组&#xff0c;用来存放学生的成绩&#xff0c;包含一个私有变量&#xff0c;用来记录学生个数&#xff0c; 提供一个公有成员函数&#xff0c;void setNum(int num)用于设置学生个数 提供一个公有成员函数&…

微服务05-Docker基本操作

Docker的定义 1.什么是Docker Docker是一个快速交付应用、运行应用的技术&#xff1a; 可以将程序及其依赖、运行环境一起打包为一个镜像&#xff0c;可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器&#xff0c;各个应用互不干扰启动、移除都可以通过一行命令完…

程序分区:全局区、常量区、栈区、堆区、代码区

#include <iostream> using namespace std; //全局变量 int g_a 10; int g_b 10; //全局常量 const int c_g_a 10; const int c_g_b 10;int main() { //局部变量 int a 10; int b 10; //打印地址 cout << "局部变量a地址为&#xff1a; " <…

第一章 微信小程序入门

文章目录 一.关于小程序思维导图二.详细讲解1.初始微信小程序1.1 什么是微信小程序1.2 微信小程序的特点1.3微信小程序的发展前景1.4微信小程序的宿主环境 2.微信小程序开发前的准备2.1 注册微信小程序的开发账户2.2获取微信小程序的AppID2.3安装微信开发者工具2.4创建微信小程…