易筋SpringBoot 2.2 | 第三十二篇:Redis Docker入门
写作时间: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的数据结构,例如以下几种:
- String: 字符串
- Hash: 散列
- List: 列表
- Set: 集合
- Sorted Set: 有序集合
相关资源
Redis 官网:https://redis.io/
Redis 在线测试:http://try.redis.io/
Spring 对 Redis 的支持
- Spring Data Redis
- 支持的客户度 Jedis / Lettuce
- RedisTemplate
- Redis Repository
2. Redis 优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 - 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
3. Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
4. Redis与其他key-value存储有什么不同?
Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
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入门相关推荐
- “约见”面试官系列之常见面试题第三十二篇之async和await(建议收藏)
一.async和await async和await的概念 1)async 函数是 Generator 函数的语法糖,使用 关键字 async 来表示,在函数内部使用 await 来表示异步 2)ES7 ...
- Android UI开发第三十二篇——Creating a Navigation Drawer
Navigation Drawer是从屏幕的左侧滑出,显示应用导航的视图.官方是这样定义的: The navigation drawer is a panel that displays the ap ...
- android 模糊查询控件_第三十二篇:在SOUI2.0中像android一样使用资源
SOUI2.0之前,在SOUI中使用资源通常是直接使用这个资源的name(一个字符串)来引用.使用字符串的好处在于字符串能够表达这个资源的意义,因此使用字符串也是现代UI引擎常用的方式.尽管直接使用字 ...
- 第三十二篇、基于Arduino uno,获取光敏电阻传感器的原始值和光照强度——结果导向
0.结果 说明:先来看看串口调试助手显示的结果,第一个值是原始的模拟电压值,第二个值是含光量,也就是光照强度,如果是你想要的,可以接着往下看. 1.外观 说明:虽然光敏电阻传感器形态各异,但是原理和代 ...
- axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...
- 三十二、Java集合中的ArrayList
@Author:Runsen @Date:2020/6/3 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...
- python建站部署_SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台...
SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台 一.概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源 ...
- ASP 三十二条精华代码
整理收藏: ASP 三十二条精华代码 1. οncοntextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键 <table b ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
最新文章
- linux 进程相关
- 从你输入一个网址,到网页显示,其间发生了什么?
- JVM中OutOFMemory和StackOverflowError异常代码
- 完全内核移植–kernel3.15.3
- 知道的越多,越感觉自己渺小
- PostgreSQL 、springboot 、spring data jpa 集成
- Windows Server 2012 R2 里面如何安装Net Framework 3.5
- 10大国外IT网站(转)
- 用python的turtle画正方形内切圆_Python 用turtle实现用正方形画圆的例子
- 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_2_综合案例_文件上传案例的客户端...
- Coded UI Test(二)创建一个Coded UI Test
- Zookeeper之Leader选举
- pythyon爬虫实现12306查票
- Android Studio升级到3.0版本后布局不能预览解决方案
- python实现中考倒计时
- PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]
- FotoMagico 5.6.5 特别版 Mac 专业的幻灯片制作工具
- Becky!使用集要(0516版)
- Java制作计算器实现加减乘除
- 如何在企业微信群快速开播进行直播带货?
热门文章
- python课题_python课题报告
- 简述计算机的四代发展阶段 以及电子器件,2014计算机作业1答案
- MATLAB rolcus函数,利用Matlab绘制系统的根轨迹.doc
- ASP.NET中防止刷新页面造成表单重复提交
- ihttphandler ihttpmodule
- 查找两个表中主键一样但其它字段数值不一样的记录
- 中国芯热情高涨 步履也更为坚实 近期我国多家企业再获“芯”突破
- Appium Server
- 负载均衡之LVS详解
- linux下编译yacc命令,Lex/Yacc的学习——《编译原理及实践》附录B tiny编译器源码在linux下编译实现...