写作时间:2019-12-01
Spring Boot: 2.2.1 ,JDK: 1.8, IDE: IntelliJ IDEA

1. 说明

Remote Dictionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Redis的数据结构,例如以下几种

  1. String: 字符串
  2. Hash: 散列
  3. List: 列表
  4. Set: 集合
  5. Sorted Set: 有序集合

相关资源
Redis 官网:https://redis.io/
Redis 在线测试:http://try.redis.io/

Spring 对 Redis 的支持

  • Spring Data Redis

    • 支持的客户度 Jedis / Lettuce
    • RedisTemplate
    • Redis Repository

2. Redis 优势

  1. 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
    丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  2. 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  3. 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

3. Redis 与其他 key - value 缓存产品有以下三个特点:

  1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  2. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  3. Redis支持数据的备份,即master-slave模式的数据备份。

4. Redis与其他key-value存储有什么不同?

  1. Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

  2. Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

5. Jedis 客户端的简单实用

  • Jedis 不是线程安全的
  • 通过 JedisPool 获得 Jedis 实例
  • 直接使用 Jedis 中的方法

6. 通过 Docker 启动 Redis

官方指引

  • https://hub.docker.com/
    进入镜像中心,搜索redis,第一个就是官方的镜像
  • https://hub.docker.com/_/redis

搜索Redis镜像

% docker search redis
NAME                             DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
redis                            Redis is an open source key-value store that…   7343                [OK]
bitnami/redis                    Bitnami Redis Docker Image                      127                                     [OK]
sameersbn/redis                                                                  77                                      [OK]
...

获取镜像

  • docker pull redis

查看本地镜像

% docker images redis
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              63130206b0fa        10 days ago         98.2MB

创建启动 Redis

  • docker run -d -p 6379:6379 -v $PWD/data:/data redis

解析:

  • -p 6379:6379 : 将容器的6379端口映射到主机的6379端口

  • -v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data

如果已经存在 Redis的镜像,直接启动就好

  • docker start redis

查看Docker中的进程

% docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
a29d10ecd6d5        redis               "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:6379->6379/tcp   elastic_curie

运行Redis客户端,注意要跟Server关联,也即是上面的Container Id

% docker exec -it a29d10ecd6d5 redis-cli

查看Redis 信息

% docker exec -it a29d10ecd6d5 redis-cli
127.0.0.1:6379> info
# Server
redis_version:5.0.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:442b43d467cd2b03
redis_mode:standalone
os:Linux 4.9.184-linuxkit x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:8.3.0
process_id:1
run_id:ae99dde4e98d8316ba0fb9ec489a29e1c34a9de6
tcp_port:6379
uptime_in_seconds:163
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:8918360
executable:/data/redis-server
config_file:
...

操作hset 命令

127.0.0.1:6379> hset myhash field1 "Hello"
(integer) 1
127.0.0.1:6379> hget myhash field1
"Hello"
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "Hello"

7. 总结

恭喜你,学会了Redis操作数据。

8. 参考

https://redis.io
http://try.redis.io/
https://hub.docker.com/_/redis
https://www.runoob.com/redis/redis-tutorial.html
https://www.runoob.com/docker/docker-install-redis.html

易筋SpringBoot 2.2 | 第三十二篇:Redis Docker入门相关推荐

  1. “约见”面试官系列之常见面试题第三十二篇之async和await(建议收藏)

    一.async和await async和await的概念 1)async 函数是 Generator 函数的语法糖,使用 关键字 async 来表示,在函数内部使用 await 来表示异步 2)ES7 ...

  2. Android UI开发第三十二篇——Creating a Navigation Drawer

    Navigation Drawer是从屏幕的左侧滑出,显示应用导航的视图.官方是这样定义的: The navigation drawer is a panel that displays the ap ...

  3. android 模糊查询控件_第三十二篇:在SOUI2.0中像android一样使用资源

    SOUI2.0之前,在SOUI中使用资源通常是直接使用这个资源的name(一个字符串)来引用.使用字符串的好处在于字符串能够表达这个资源的意义,因此使用字符串也是现代UI引擎常用的方式.尽管直接使用字 ...

  4. 第三十二篇、基于Arduino uno,获取光敏电阻传感器的原始值和光照强度——结果导向

    0.结果 说明:先来看看串口调试助手显示的结果,第一个值是原始的模拟电压值,第二个值是含光量,也就是光照强度,如果是你想要的,可以接着往下看. 1.外观 说明:虽然光敏电阻传感器形态各异,但是原理和代 ...

  5. axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  6. 三十二、Java集合中的ArrayList

    @Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  7. python建站部署_SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台...

    SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台 一.概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源 ...

  8. ASP 三十二条精华代码

    整理收藏: ASP 三十二条精华代码 1. οncοntextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table b ...

  9. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  10. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

最新文章

  1. linux 进程相关
  2. 从你输入一个网址,到网页显示,其间发生了什么?
  3. JVM中OutOFMemory和StackOverflowError异常代码
  4. 完全内核移植–kernel3.15.3
  5. 知道的越多,越感觉自己渺小
  6. PostgreSQL 、springboot 、spring data jpa 集成
  7. Windows Server 2012 R2 里面如何安装Net Framework 3.5
  8. 10大国外IT网站(转)
  9. 用python的turtle画正方形内切圆_Python 用turtle实现用正方形画圆的例子
  10. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_2_综合案例_文件上传案例的客户端...
  11. Coded UI Test(二)创建一个Coded UI Test
  12. Zookeeper之Leader选举
  13. pythyon爬虫实现12306查票
  14. Android Studio升级到3.0版本后布局不能预览解决方案
  15. python实现中考倒计时
  16. PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]
  17. FotoMagico 5.6.5 特别版 Mac 专业的幻灯片制作工具
  18. Becky!使用集要(0516版)
  19. Java制作计算器实现加减乘除
  20. 如何在企业微信群快速开播进行直播带货?

热门文章

  1. python课题_python课题报告
  2. 简述计算机的四代发展阶段 以及电子器件,2014计算机作业1答案
  3. MATLAB rolcus函数,利用Matlab绘制系统的根轨迹.doc
  4. ASP.NET中防止刷新页面造成表单重复提交
  5. ihttphandler ihttpmodule
  6. 查找两个表中主键一样但其它字段数值不一样的记录
  7. 中国芯热情高涨 步履也更为坚实 近期我国多家企业再获“芯”突破
  8. Appium Server
  9. 负载均衡之LVS详解
  10. linux下编译yacc命令,Lex/Yacc的学习——《编译原理及实践》附录B tiny编译器源码在linux下编译实现...