IT老王:redis

目录

一、 Redis介绍

1. NoSQL的引言

2. 为什么是NoSQL

3. NoSQL的四大分类

3.1. 键值(Key-Value)存储数据库

3.2 .列存储数据库

3.3 .文档型数据库

3.4 .图形(Graph)数据库

4. NoSQL应用场景

扫描二维码关注公众号,回复: 17814646 查看本文章

5. 什么是Redis

6. Redis特点

二、Redis安装和设置

1.下载安装

三、 Redis命令操作

1 数据库操作指令

2 操作key相关指令

​编辑

3 String类型

1. 内存存储模型

​编辑

2. 常用操作命令

4 List类型

1.内存存储模型

​编辑

2.常用操作指令

5 Set类型

1.内存存储模型

​编辑

2.常用命令

6 ZSet类型

1.内存模型

​编辑

2.常用命令

7 hash类型

1.内存模型

​编辑

2.常用命令

四、持久化机制

1. RDB方式 快照(Snapshot)

1.1. 特点

1.2.快照生成方式

2.AOF 只追加日志文件

2.1.特点

3. 持久化总结

五 使用 Java 客户端操作 Redis

1.使用步骤

1.下载 Jedis 的 jar 包

2.使用

2.Jedis 操作各种 Redis 数据结构

3. Jedis 连接池:JedisPool

4.Jedis 连接池工具类


一、 Redis介绍

1. NoSQL的引言

NoSQL(Not Only SQL ),意即不仅仅是SQL, 泛指非关系型的数据库。是一项全新的数据库理念,泛指非关系型的数据库。

2. 为什么是NoSQL

随着互联网网站的兴起,传统的关系数据库在应付动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。如商城网站中对商品数据频繁查询对热搜商品的排行统计订单超时问题、以及微信朋友圈(音频,视频)存储等相关使用传统的关系型数据库实现就显得非常复杂,虽然能实现相应功能但是在性能上却不是那么乐观。nosql这个技术门类的出现,更好的解决了这些问题,它告诉了世界不仅仅是sql。

3. NoSQL的四大分类

3.1. 键值(Key-Value)存储数据库

# 1.说明: 
- 这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。# 2.特点
- Key/value模型对于IT系统来说的优势在于简单、易部署。  
- 但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。# 3.相关产品
- Tokyo Cabinet/Tyrant,
- Redis
- SSDB
- Voldemort 
- Oracle BDB

3.2 .列存储数据库

# 1.说明
- 这部分数据库通常是用来应对分布式存储的海量数据。# 2.特点
- 键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。# 3.相关产品
- Cassandra、HBase、Riak.

3.3 .文档型数据库

# 1.说明
- 文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高# 2.特点
- 以文档形式存储# 3.相关产品
- MongoDB、CouchDB、 MongoDb(4.x). 国内也有文档型数据库SequoiaDB,已经开源。

3.4 .图形(Graph)数据库

# 1.说明
- 图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。
- NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。# 2.特点# 3.相关产品
- Neo4J、InfoGrid、 Infinite Graph、


4. NoSQL应用场景

  • 缓存(数据查询、短连接、新闻内容、商品内容等等)

  • 聊天室的在线好友列表

  • 任务队列。(秒杀、 抢购、12306等等)

  • 应用排行榜

  • 网站访问统计

  • 数据过期处理(可以精确到毫秒)

  • 分布式集群架构中的 session 分离

5. 什么是Redis

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.

Redis 开源 遵循BSD 基于内存数据存储 被用于作为 数据库 缓存 消息中间件

Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s,且 Redis 通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下: 字符串类型 String 哈希类型 Hash 列表类型 List 集合类型 Set 有序集合类型 sortedset

  • 总结: redis是一个内存型的数据库

6. Redis特点

  • Redis是一个高性能key/value内存型数据库

  • Redis支持丰富的数据类型

  • Redis支持持久化

  • Redis单线程,单进程


二、Redis安装和设置

1.下载安装

Redis 官网(Linux 版本) Redis 中文官网 Redis (Windows 版本)GitHub 下载

  • 解压直接可以使用,找到文件:

    • redis.windows.conf :配置文件

    • redis-cli.exe :Redis 的客户端

    • redis-server.exe :Redis 的服务器端

      开启 Redis 时,需要先双击开启服务器端,再开启客户端

  • 服务器端

  • 客户端

  • 要先开启服务器端,才能开启客户端

三、 Redis命令操作

1 数据库操作指令

# 1.Redis中库说明
- 使用redis的默认配置器动redis服务后,默认会存在16个库,编号从0-15
- 可以使用select 库的编号 来选择一个redis的库# 2.Redis中操作库的指令
- 清空当前的库  FLUSHDB
- 清空全部的库  FLUSHALL

2 操作key相关指令

# 1.DEL指令
- 语法 :  DEL key [key ...] 
- 作用 :  删除给定的一个或多个key 。不存在的key 会被忽略。
- 可用版本: >= 1.0.0
- 返回值: 被删除key 的数量。 # 2.EXISTS指令
- 语法:  EXISTS key
- 作用:  检查给定key 是否存在。
- 可用版本: >= 1.0.0
- 返回值: 若key 存在,返回1 ,否则返回0。# 3.EXPIRE
- 语法:  EXPIRE key seconds
- 作用:  为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。
- 可用版本: >= 1.0.0
- 时间复杂度: O(1)
- 返回值:设置成功返回1 。# 4.KEYS
- 语法 :  KEYS pattern
- 作用 :  查找所有符合给定模式pattern 的key 。
- 语法:
    KEYS * 匹配数据库中所有key 。
    KEYS h?llo 匹配hello ,hallo 和hxllo 等。
    KEYS h*llo 匹配hllo 和heeeeello 等。
    KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。特殊符号用 "\" 隔开
- 可用版本: >= 1.0.0
- 返回值: 符合给定模式的key 列表。# 5.TTL
- 语法 :   TTL key
- 作用 :   以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。
- 可用版本: >= 1.0.0
- 返回值:
    当key 不存在时,返回-2 。
    当key 存在但没有设置剩余生存时间时,返回-1 。
    否则,以秒为单位,返回key 的剩余生存时间。
- Note : 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。# 6.RENAME
- 语法 :  RENAME key newkey
- 作用 :  将key 改名为newkey 。当key 和newkey 相同,或者key 不存在时,返回一个错误。当newkey 已经存在时,RENAME 命令将覆盖旧值。
- 可用版本: >= 1.0.0
- 返回值: 改名成功时提示OK ,失败时候返回一个错误。# 7.TYPE
- 语法 :  TYPE key
- 作用 :  返回key 所储存的值的类型。
- 可用版本: >= 1.0.0
- 返回值:
    none (key 不存在)
    string (字符串)
    list (列表)
    set (集合)
    zset (有序集)
    hash (哈希表)
Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:官网也给出了命令解释

Commands | Docsicon-default.png?t=N7T8https://redis.io/commands

3 String类型

1. 内存存储模型