一.NoSql
1.什么是NoSql
NoSQL不仅仅是No SQL,还是Not only SQL,SQL代表传统关系数据库,NoSQL显然是针对传统关系数据库的补充和升级。
NoSQL分类:
(1)Key-value stores键值存储, 保存keys+BLOBs (二进制大对象Binary Large OBjects)
(2)Table-oriented 面向表列, 主要有Google的BigTable和Cassandra.
(3)Document-oriented面向文档, 文本是一种类似XML文档,MongoDB 和 CouchDB
(4)Graph-oriented 面向图论. 如Neo4J
2.为什么使用NoSql
参考https://www.cnblogs.com/lukelook/p/11135209.html
二.Redis安装和使用
1.Redis简介
中文官网:http://www.redis.cn/
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
2.Window上安装Redis
1)本教程使用3.2版本,下载Redis-x64-3.2.100.zip,解压到D盘。
2)点击redis-server.exe运行redis服务器,如果出现闪关情况,是没有读取到redis.windows.conf配置文件,解决方案如下:
在D:\DevSoftware\Redis-x64-3.2.100目录下打开cmd界面,执行redis-server.exe redis.windows.conf(中间空格),回车
出现如上图所示的图案就表示服务启动成功了,启动后不能关闭服务窗口
3)点击redis-cli.exe运行客户端
set命令设置key和value,get命令通过key获取value值
3.Linux上安装Redis
1)使用Xftp将redis-3.2.9.tar.gz上传到Linux的home下的Soft
2)进入到Soft目录执行
tar -zxvf redis-3.2.9.tar.gz -C /usr/local/
3)cd到/usr/local/,可以看到redis解压后的目录
4)cd到redis-3.2.9
5)cd到src目录,编译Redis,需要使用到gcc编译器
6)cd到src上级目录,执行make命令
7)安装成功
可以执行make install,这个命令是让redis可以在任意位置执行。
我们选择在src文件下执行,绿色的代表可以执行
8)执行 ./redis-server(前台启动,不能再执行其他命令)
9)后台启动,命令:./redis-server & 执行成功后回车,程序界面退出
或者修改redis.conf文件daemonize yes就不需要&
10)通过ps命令查看redis: ps -ef | grep redis
11)执行 ./redis-cli命令 启动客户端
4.关闭客户端redis
三.Redis客户端
1.redis命令行客户端
2.redis远程客户端
下载安装桌面客户端
使用客户端
打开客户端,访问不了虚拟机上的Redis服务,修改Redis的网络安全策略,并关闭Linux防火墙(命令:systemctl stop firewalld)才能访问。同时修改redis.conf配置文件。
1)命令:vi redis.conf,编辑配置文件
2)输入: /bind 查找bind 按n键自上而下查找
找到并注释,按i键进入编辑,同时将protected-mode yes 保护模式改为no。
3)保存退出:ESC后,shit+:后,wq保存。
注:redis.conf文件生效的话,每次启动时必须加上所处位置的redis.conf
./redis-server ../redis.conf &
四.基本操作命令
1.沟通命令
2.dbsize
3.databases
4.切换库
5.删除当前库数据
6.退出
五.Redis操作key的命令
1.keys
尽量不要使用keys *
2.exists
3.expire
可以用来解决验证码
4.ttl
5.type
6.del
六.Redis数据类型
1.string
可以存储大文本
2.hash
存放对象信息,用户信息session问题
3.list
4.set
5.zset
七.Redis数据类型操作命令
1.string
1)基本命令
incr操作时原子性的,可以做全局的计数器
decr也是原子操作
2)常用命令
2.Hash
1)基本命令
2)常用命令
3.List
1)基本命令
2)常用命令
4.Set
1)基本用法
2)常用命令
count正数,结果不重复
count负数,结果有可能重复
5.zset
1)基本命令
八.高级话题
8.1 Redis事务
MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证:
- 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
- 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
EXEC 命令负责触发并执行事务中的所有命令:
- 如果客户端在使用 MULTI 开启了一个事务之后,却因为断线而没有成功执行 EXEC ,那么事务中的所有命令都不会被执行。
- 另一方面,如果客户端成功在开启事务之后执行 EXEC ,那么事务中的所有命令都会被执行。
8.1.1 事务操作的命令
8.1.2 事务的实现
redis没有回滚的功能
8.2 持久化
8.2.1 持久化概述
8.2.2 持久化方式
aof是文本文件,可以用vi修改。如果redis启动读取aof有问题时,可以修改aof文件删除错误的命令。
8.3 主从复制
8.3.1 主从复制
拷贝:cp redis.conf redis6388.conf
清空redis6388.conf内容:> redis6388.conf
启动服务
info replication查看服务信息
从服务器是不能写操作,lpop取操作也是不允许的。
在6389执行slaveof no one
6389已经成为主服务器,但是6390不清楚,6390执行 slaveof ip port 命令
当6388重新启动时,需要将其挂载到新的master上,执行 slaveof ip port 命令,
这样就只有一个主服务器。
8.3.2 高可用Sentinel哨兵
哨兵系统必须是奇数个,至少3个,因为它采用少数服从多数的机制,如上图,3个哨兵系统同时监控Master,心跳模式,当发现Master宕机了,哨兵开始投票,第一个投1票,第二个投1票,根据少数服从多数,第三个就没必要投票,哨兵将Slave中选择一个设置为Master。
哨兵的配置文件
哨兵的运行命令
36380示例,其他2个就不截图了
关闭redis Master服务器,sentinel自动将slave升级为Master(需要等待几秒)
8.4 安全设置
打开requirepass 后面设置密码
设置密码后,客户端访问需要输入密码:./redis-cli -a ***
或者用auth ***