1.Redis的介绍
是一个开源的使用
C
语言编写,支持网络,可基于内存亦可持久化的日志
key-value
数据库,是一
个非关系型数据库。
关系型数据库
有
mysql,oracle,sqlserver,db2 关系型数据库。
2.Redis 特性
Redis
远程的
:分为客户端,服务端。可以分别部署在不同的机器上,通过自定义协议进行 传输
和交互的。平时说的 Redis
通常指的是
Redis
的服务端。
Redis
基于内存的
:所有数据结构存在
内存
中。
所有操作非常高速。性能优越于硬盘存储的
mysql
,因为存在内存中,所有也是比较消耗内存的。
Redis
非关系型数据库
:本质是数据库,存储数据,区别于
Mysql
。 关系型数据库在存储之前,
必须要定义好所谓的数据字典,后续的存储数据按照存储字典来 存储,而 Redis 就不需要了。
3.Redis应用场景
1.
缓存:
当系统的接口数据比较慢的时候,可以把系统数据接口的数据缓存起来,当下次取的时
候,可以直接从缓存中取就可以了。
2.
数据存储:
redis
有两种非常完备的持久化机制【
AOF
和
RDB
】,可以定期将数据持久化硬
盘中,保障数据的完整性,安全性。
4.Redis的优点
我们在碰到需要执行
耗时
特别久,且结果不频繁变动的 SQL,就特别适合将运行结果放入缓存。
这样,后面的请求就去缓存中读取,使得请求 能够迅速响应。
![](https://img-blog.csdnimg.cn/20210903091135820.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5beb5bCP5paH5a2QLi4uLi4u,size_20,color_FFFFFF,t_70,g_se,x_16)
高并发:
在大并发的情况下,所有的请求直接访问数据库,数据库会出现 连接异常。这个时候,就需要使
用 redis 做一个缓冲操作,让请求先访问到
redis
, 而不是直接访问
数据库
。
![](https://img-blog.csdnimg.cn/20210903091358269.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5beb5bCP5paH5a2QLi4uLi4u,size_20,color_FFFFFF,t_70,g_se,x_16)
5.Redis性能优越的原因
(一)纯
内存
操作
(二)
单线程
操作,避免了频繁的上下文切换
(三)采用了非阻塞 I/O
多路复用
机制(有事情我就去做,没有什么事情我就做其它事情)
6.Redis的使用
解压安装、在Linux的/usr/local/bin目录下
redis-cli :表示 redis 的客户端
redis-server :表示 redis 的服务器
开启服务: ./
redis-server
![](https://img-blog.csdnimg.cn/20210903092956239.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5beb5bCP5paH5a2QLi4uLi4u,size_12,color_FFFFFF,t_70,g_se,x_16)
启动服务后则该窗口什么也不能做了,因为 redis 启动方式默认前台启动。为了是窗口可以用,可
以设置 redis 为后台启动
Port
6379 :redis 默认的端口号
6.1:Redis的配置
redis.conf
配置文件
bind
绑定那个
ip
地址
protected-mode
yes
保护模式是否开启
port
6379
端口号
tcp-backlog
511
确定了 TCP 连接中已完成队列
timeout
0
设置客户端空闲超时时间,服务端不会主动断开连接,不能小于
0
。
tcp-keepalive
300
每个一段时间
300
秒发送一次请求
.
看是否还活着
daemonize
yes
是否在后台执行!
supervised
no
无监督交互
pidfile /var/run/redis_6379.pid
指定存储
Redis
进程号的文件路径
loglevel notice
日志级别
notice (
仅试用于生产
)
logfile ""
配置
log
文件地址
,
默认打印在命令行终端的窗口上,也可设为
/dev/null
屏蔽日志
databases
16
指定数据库个数
maxclient
最大客户端连接数
Maxmemory
:
设置
Redis
可以使用的内存量。一旦到达内存使用上限,
Redis
将会试图移除内部数据,
移除规则 可以通过
maxmemory-policy
来指定。如果
Redis
无法根据移除规则来移除内存中
的数据,或者设置了“不允许移除”,
那么
Redis
则会针对那些需要申请内存的指令返回错误信息,比如
SET
、
LPUSH
等。
Maxmemory-policy noeviction
默认配置
(
1
)
volatile-lru
:使用
LRU
算法移除
key
,只对设置了过期时间的键
(
2
)
allkeys-lru
:使用
LRU
算法移除
key
(
3
)
volatile-random
:在过期集合中移除随机的
key
,只对设置了过期时间的键
(
4
)
allkeys-random
:移除随机的
key
(
5
)
volatile-ttl
:移除那些
TTL
值最小的
key
,即那些最近要过期的
key
(
6
)
noeviction
:不进行移除。针对写操作,只是返回错误信息
(7) cluster-enabled yes
是否开启集群
6.2设置Redis的后台启动
先使用
ctrl+c
退出前台启动
1.
回到
redis
的解压目录去找
redis.conf
配置文件
2.找到之后,拷贝到安装目录
cp redis.conf /usr/local/redis/bin
要修改
redis.conf
配置文件
daemonize no – daemonize
yes
此属性表示设置
redis
的启动方式。
no 表示前台启动,yes 表示后台启动。
修改完成之后,再重新启动
redis
6.3Redis 的五种数据类型
String :是 Redis 最基本的类型
,你可以理解成与
Memcached
一模一样的类型,一个
key
对应一
个 value
。
Map key-value
String str = “hello”; redis key – value String s = new String(“”);
String
类型是二进制安全的。意味着
Redis
的
string
可以包含任何数据。比如
jpg
图片或者序列的
对象。
String 类型是 Redis 最基本的数据类型,一个 Redis 中字符串 value 最多可以是 512M.
List:单键多值
Redis
列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的
头部(左边)或者尾部(右边)
。
它的底层实际是个
双向链表
,对两端的操作性能很高,通过索引下标的操作中间的
节点性能会较
差。
![](https://img-blog.csdnimg.cn/20210903100900910.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5beb5bCP5paH5a2QLi4uLi4u,size_15,color_FFFFFF,t_70,g_se,x_16)
Set:
Redis set
对外提供的功能与
list
类似是一个列表的功能,特殊之处在于
set
是可以
自
动排重的
,当
你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择
。
Hash
:
Redis hash
是一个
键值对
集合。
Redis hash
是一个
string
类型的
field
和
value
的映射表,
hash
特别适合用于存储对象。
类似
Java
里面的
Map<String,Object>
Zset
:
Redis
有序集合
zset
与普通集合
set
非常相似,是一个没有重复元素的字符串集合。不同之处是有
序集合的没有成员都关联了一个评分(
score
) ,这个评分(
score
)
被用来按照从最低分到最高
分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了。
因为元素是有序的
,
所以你也可以很快的根据评分(
score
)或者次序(
position
)来获取 一个范围
的元素。访问有序集合的中间元素也是非常快的,
因此你能够使用有序集合作为一个没有重复成员
的智能列表。
使用场景:
![](https://img-blog.csdnimg.cn/20210903101850500.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5beb5bCP5paH5a2QLi4uLi4u,size_20,color_FFFFFF,t_70,g_se,x_16)
6.4:常用命令
6.4.1:非数据类型常用查看命令
6.查看键的类型
a)type <key>
6.4.2.String 类型常用命令
![](https://img-blog.csdnimg.cn/20210903103037780.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5beb5bCP5paH5a2QLi4uLi4u,size_20,color_FFFFFF,t_70,g_se,x_16)
6.4.3.List 类型常用命令
6.4.4.Set类型常用命令
6.4.5.Hash 类型常用命令
6.4.6.Zset 类型常用命令