学习知识点:
- No SQL概念以及特点
- Redis的概述安装
- Redis中常用的五大类型
- 解读Redis的配置文件
- Redis的发布与订阅
- Redis的新数据类型
- Jedis操作Redis
- Redis和springboot整合
- Redis的事务操作
- Redis持久化之RDB
- Redis持久化之AOF
- Redis的主从复制
- Redis集群
- Redis应用问题解决
- Redis新功能
1、 No SQL概念以及特点:
技术发展:
web发展史:
WEB1.0
WEB2.0
由于web的发展,数据访问量不断增加,导致应用服务器出现CPU以及内存和IO压力问题。为减轻CPU和内存压力使用NGINX负载均衡技术。而使用NGINX负载均衡技术在登陆时用户信息存储会出现session问题。为了解决session问题有三种方案:
使用cookie技术将用户信息存储到客户端,由于存储到客户端不安全,所以不建议使用使用session复制技术,将多台服务器session对象同步,这样会造成空间极大的浪费session数据冗余- 使用NOSQl缓存数据库解决,完全在内存中,速度快数据结构简单。
也可以解决IO压力:
NOSQL数据库概述:
概述: nosql数据库泛指“非关系型数据库”Nosql不依赖于业务逻辑方式存储,而以简单的key-value模式存储,因此大大增加了数据的扩展能力。
特点:
- 不遵循SQL标准
- 不支持ACID
- 远超于SQL性能
2、 Redis的概述与安装:
概述:Redis是一个开源的key-value存储系统。他支持存储的value类型相对更多,包括string,list,set,zset,hash。Redis可支持不同方式排序,为了保证效率,数据都是缓存到内存中的。Redis还会周期性的把更新的数据写入磁盘或者把修改操作写入追加到记录文件。
安装:
- 打开Redis官网,Redis中文网;
- 在官网中下载对应操作系统下载对应版本Redis;
- 右键Download按钮,选择复制链接,如:http://download.redis.io/releases/redis-5.0.4.tar.gz
进入到Xshell控制台(默认当前是root根目录),输入wget 将上面复制的下载链接粘贴上,如下命令:wget http://download.redis.io/releases/redis-5.0.7.tar.gz
- 敲入回车键执行,等待下载完成。
- 下载完成后需要将压缩文件解压,输入以下命令解压到当前目录
tar -zvxf redis-5.0.7.tar.gz
-
移动redis目录
一般都会将redis目录放置到 /usr/local/redis目录,所以这里输入下面命令将目前在/root目录下的redis-5.0.7文件夹更改目录,同时更改文件夹名称为redis。
mv /root/redis-5.0.7 /usr/local/redis
cd 到/usr/local目录下输入ls命令可以查询到当前目录已经多了一个redis子目录,同时/root目录下已经没有redis-5.0.7文件夹
-
编译
cd到/usr/local/redis目录,输入命令make执行编译命令,接下来控制台会输出各种编译过程中输出的内容。
make
-
安装
输入以下命令
make PREFIX=/usr/local/redis install
这里多了一个关键字
PREFIX=
这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。 -
启动redis根据上面的操作已经将redis安装完成了。在目录/usr/local/redis 输入下面命令启动
./bin/redis-server& ./redis.conf
3,Redis中常用的五大类型:
Redis中键的使用:
Redis 键命令用于管理 redis 的键。
实例:
redis 127.0.0.1:6379> SET runoobkey redis
OK
redis 127.0.0.1:6379> DEL runoobkey
(integer) 1
在以上实例中 DEL 是一个命令, runoobkey 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0
常用命令:
序号 | 命令以及描述 |
1 | 该命令用于在 key 存在时删除 key。 |
2 | 检查key是否存在。 |
3 | 返回key的类型。 |
4 | 序列化给定 key ,并返回被序列化的值。 |
5 | 为给定 key 设置过期时间,以秒计。 |
6 | EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。 |
7 | 移除 key 的过期时间,key 将持久保持。 |
8 | 查找所有符合给定模式( pattern)的 key 。 |
String类型:
最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
序号 | 命令及描述 | 实例 |
1 | set key value Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型 | |
2 | get key 获取指定key的value值 | |
3 | GETRANGE key start end 返回 key 中字符串值的子字符 | |
4 | GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 | |
5 | SETNX key value 只有在 key 不存在时设置 key 的值。 | |
6 | STRLEN key 返回 key 所储存的字符串值的长度 | |
以下未更新完毕,后续会持续更新......
hash类型:
这里value存放的是结构化的对象,比较方便的就是操作其中的某个字段。博主在做单点登录的时候,就是用这种数据结构存储用户信息,以cookieId作为key,设置30分钟为缓存过期时间,能很好的模拟出类似session的效果。
list类型:
使用List的数据结构,可以做简单的消息队列的功能。另外还有一个就是,可以利用lrange命令,做基于redis的分页功能,性能极佳,用户体验好。本人还用一个场景,很合适---取行情信息。就也是个生产者和消费者的场景。LIST可以很好的完成排队,先进先出的原则。
set类型:
zset类型:
sorted set多了一个权重参数score,集合中的元素能够按score进行排列。可以做排行榜应用,取TOP N操作。