NoSQL介绍
基本概述
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。
NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
特点:
- 不遵循SQL标准。(有自己的一系列命令操作)
- 不支持ACID(没有事务地特性不代表没有事务)
- 比SQL性能高很多
Redis介绍
使用场景
配合关系型数据库做高速缓存
比如:高频率访问的数据,降低数据库地IO,分布式架构中,做session地共享
多样地数据结构存储持久化数据
安装
Redis官方网站 | Redis中文官方网站 |
---|---|
http://redis.io | http://redis.cn/ |
说明:redis没有官方提供windows地安装包,但是Windows自个提供了这个安装包。
-
准备工作:下载安装最新版的gcc编译器
yum install centos-release-scl scl-utils-build yum install -y devtoolset-8-toolchain scl enable devtoolset-8 bash gcc --version # 测试安装环境
-
Linux命令配置
tar -zxvf redis-6.2.1.tar.gz # 解压这个安装包 # 然后进入这个解压后的目录 cd redis-6.2.1 # 在redis-6.2.1目录下再次执行make命令(只是编译好) # 如果没有准备好C语言编译环境,make 会报错—Jemalloc/jemalloc.h:没有那个文件 # 解决方案:运行make distclean,在redis-6.2.1目录下再次执行make命令,跳过make test 继续执行: make install
-
然后就是启动
Redis相关知识
-
redis中默认16个数据库,类似数组下标从0开始,初始默认使用0号库。使用命令 select 来切换数据库。如: select 8
-
统一密码管理,所有库同样密码。
-
dbsize查看当前数据库的key的数量
-
flushdb清空当前库
-
flushall通杀全部库
Redis是单线程+多路IO复用技术
正经说法:多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)
通俗例子:假设有三个人去车站买票,买不同的地方的,这个时候就需要三个窗口进行,并且如果前面有人你就不能走,还需要排队等着,这个时候如果叫黄牛买票呢?这三个人就只需要一个电话打给这个黄牛,然后他们有啥事就走了,压根不用等,等这个黄牛买到票了会打电话通知他们,这个时候他们再来取票就行了。
Redis数据类型
命令手册:http://www.redis.cn/commands.html
菜鸟教程:https://www.runoob.com/redis
在先命令测试:https://try.redis.io/(只包含常用地数据结构操作)
redis键地常用命令
命令 | 效果 |
---|---|
keys * | 查看当前库所有key (匹配:keys *1) |
exists key | 判断某个key是否存在(1存在,0不存在) |
type key | 查看你的key是什么类型 |
del key | 删除指定的key数据 |
unlink key | 根据value选择非阻塞删除 仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作 |
expire key 10 | 10秒钟:为给定的key设置过期时间 |
ttl key | 查看还有多少秒过期,-1表示永不过期,-2表示已过期 |
select [db] | 命令切换数据库 |
dbsize | 查看当前数据库的key的数量 |
flushdb | 清空当前库 |
flushall | 通杀全部库 |
String字符串类型
基本介绍
String是Redis最基本的类型,一个key对应一个value。
String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
一个Redis中字符串value最多可以是512M
常用命令
- set :添加键值对
set key value [expiration EX seconds|PX milliseconds] [NX|XX]
# 参数说明
*NX:当数据库中key不存在时,可以将key-value添加数据库
*XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
*EX:key的超时秒数
*PX:key的超时毫秒数,与EX互斥
-
get :查询对应键值
-
append :将给定的 追加到原值的末尾(返回追加后地长度)
-
strlen :获得值的长度
-
setnx :只有在 key 不存在时 设置 key 的值(存在的时候返回0)
-
incr :将 key 中储存的数字值增1,只能对数字值操作,如果为空,新增值为1
-
decr :将 key 中储存的数字值减1只能对数字值操作&#