1、什么是 Nosql?
Nosql(Nosql = Not Only sql ),意为反 sql 运动,是一项全新的数据库革命性运动,2000 年 前就有人提出,发展至 2009 年趋势越发高涨。它是指运用非关系型的数据存储,相对于铺天盖地的 关系型数据库运用,这一概念无疑是一种全新的思维的注入。 随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并 发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的 数据库则由于其本身的特点得到了非常迅速的发展。Nosql 数据库的产生就是为了解决大规模数据集 合多重数据种类带来的挑战,尤其是大数据应用难题。
分类 | 举例 | 应用场景 | 数据模型 | 特点 |
---|---|---|---|---|
键值型 | Tokyo Cabinet/Tyrant,Redis,Voldemort,BDB | 内容缓存,主要用于处理大量数据 的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用 hash table 来实现 | 查找速度快 |
列存储数据库 | Cassandra,HBase, | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展 |
文档型数据库 | CouchDB,MongoDB | Web 应 用 ( 与 Key-Value 类似, Value是结构化的,不同的是数据库能够了解 Value 的内容) | Key-Value 对应的键值对,Value 为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构 |
图形数据库 | Neo4J,InfoGrid,Infinite Graph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法。比如最短路径寻址,多维度关系查找等 |
2、nNosql 特点
Nosql 是 key-value 形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循 sql 标准、ACID 属性、表结构等等。
这类数据库主要有以下特点:
- 非关系型的、分布式、开源的、水平可扩展的
- 处理超大量数据
- 击碎了性能瓶颈
- 对数据高并发读写
- 对海量数据的高效率存储和访问
- 对数据的高扩展性和高可用性
3、redis介绍
3.1、概述
Redis 是一个开源的,先进的 key-value 非关系型数据库。它通常被称为数据结构服务器,因为键可以包含 string (字符串)、hash(哈希)、list(链表)、set(集合)和 zset(sorted-set--有序集合)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作。
Redis 和 Memcached 类似,它支持存储的 value 类型相对更多,与 memcached 一样,为了保证效率,数据都是缓存在内存中,区别是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步。
3.2、总结
1.速度快
c语言编写
代码优雅,简洁
单线程架构
2.支持多种数据结构
字符串,哈希,列表,集合,有序集合,地理位置
3.丰富的功能
计数器
键过期功能
发布订阅
支持事务
4.支持客户端语言多
PHP,java,python
5.数据持久化
所有的数据都运行在内存中
支持2种格式持久化数据AOF&RDB
6.自带多种高可用架构
主从
哨兵
集群
3.3、应用场景
1.键值有效期
缓存
2.集合
去重处理
使用集合方法,可以进行一些数学运算
3.消息队列-发布订阅
配合ELK缓存收集来的日志
4、redis 安装
4.1、安装
[root@centos7 ~]# yum -y install wget gcc
[root@centos7 ~]# wget -c http://download.redis.io/releases/redis-5.0.7.tar.gz
[root@centos7 ~]# tar -zxvf redis-5.0.7.tar.gz #解压
[root@centos7 ~]# cd redis-5.0.7/
[root@centos7 redis-5.0.7]# make MALLOC=lib #编译,因版本较新,所以需要指定库
[root@centos7 redis-5.0.7]# make PREFIX=/usr/local/redis install #安装到指定位置
[root@centos7 redis-5.0.7]# mkdir /usr/local/redis/etc
[root@centos7 redis-5.0.7]# cp ./redis.conf /usr/local/redis/etc/ #生成配置文件
4.2、修改配置文件
[root@centos7 redis-5.0.7]# vim /usr/local/redis/etc/redis.conf
daemonize no 修改为 yes #允许redis以守护进程运行
4.3、启动服务端
[root@centos7 ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
6562:C 18 Jan 2020 00:35:33.038 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
6562:C 18 Jan 2020 00:35:33.038 # Redis version=5.0.7,bits=64,commit=00000000,modified=0,pid=6562,just started
6562:C 18 Jan 2020 00:35:33.038 # Configuration loaded
4.4、连接服务端
[root@centos7 ~]# /usr/local/redis/bin/redis-cli
-h 127.0.0.1: #连接指定的 redis 服务器
-p 6379: #指定 redis 服务器的端口
-a 密码: #使用密码登录
-n 数据库号: #指定连接哪个数据库
-c #在集群模式下使用,插入数据到非本节点的hash slot 时,会自动路由插入,不需要人为干涉。
--no-raw #结果必须是原始的格式,如果是中文,则返回编码后的中文
--raw #返回格式化后的结果,如果存储的是中文,则返回字符格式的中文
[root@centos7 ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>
127.0.0.1:6379> exit
[root@centos7 ~]#
4.4、关闭服务端
[root@centos7 ~]# /usr/local/redis/bin/redis-cli shutdown
或
[root@centos7 ~]# pkill redis
5、安全验证
5.1、修改配置文件
mkdir /usr/local/redis/{pid,log}
copy /usr/local/redis/etc/redis.conf /usr/local/redis/etc/redis.conf.bak
cat >/usr/local/redis/etc/redis.conf<<-EOF
daemonize yes
protected-mode yes
requirepass 123456
bind 127.0.0.1
port 6379
pidfile /usr/local/redis/pid/redis.pid
logfile /usr/local/redis/log/redis.log
EOF
2.2、连接测试
pkill redis
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
#1、第一种
[root@centos7 ~]# /usr/local/redis/bin/redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG
#1、第二种
[root@centos7 ~]# /usr/local/redis/bin/redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> ping
PONG
原文链接:/redis/997723.html