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,就特别适合将运行结果放入缓存。
这样,后面的请求就去缓存中读取,使得请求 能够迅速响应。

高并发:
在大并发的情况下,所有的请求直接访问数据库,数据库会出现 连接异常。这个时候,就需要使
用 redis 做一个缓冲操作,让请求先访问到 redis, 而不是直接访问数据库。

5.Redis性能优越的原因
(一)纯内存操作
(二)单线程操作,避免了频繁的上下文切换
(三)采用了非阻塞 I/O 多路复用机制(有事情我就去做,没有什么事情我就做其它事情)
6.Redis的使用
解压安装、在Linux的/usr/local/bin目录下
redis-cli :表示 redis 的客户端
redis-server :表示 redis 的服务器
开启服务: ./redis-server

启动服务后则该窗口什么也不能做了,因为 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 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的
头部(左边)或者尾部(右边)。
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较
差。

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)来获取 一个范围
的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员
的智能列表。
使用场景:

6.4:常用命令
6.4.1:非数据类型常用查看命令
6.查看键的类型
a)type <key>
6.4.2.String 类型常用命令

6.4.3.List 类型常用命令
6.4.4.Set类型常用命令
6.4.5.Hash 类型常用命令
6.4.6.Zset 类型常用命令