共计 4512 个字符,预计需要花费 12 分钟才能阅读完成。
本篇内容介绍了“NoSQL 数据库的简单介绍以及 redis 持久化数据服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
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 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
“NoSQL 数据库的简单介绍以及 redis 持久化数据服务”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!