Redis 持久化
Redis 持久化机制Redis 提供了两种持久化机制: RDB(Redis Date Base) AOF(Append Only File) RDB(Redis Date Base)在指定时间间隔内将内存中的数据集快照写入内存,恢复时将快照文件读到内存里 Redis 单独 fork 一个子进程进行持久化,现将数据写入到一个临时文件,等持久化过程结束,在将该文件替换上次持久化好的文件。整个过程中,主进程不进行任何 IO 操作,确保了性能。如果要进行大规模数据的恢复,并且对数据恢复的完整性不敏感,那么 RDB 会比 AOF 更加高效。RDB 最后一次持久化的数据可能会丢失(持久化过程中宕机) 使用 docker-compose 初始化 Redis,将 dump.rdb 所在的目录映射到宿主机: 123456789101112131415services: # 用来保存域名相关信息的 Redis redis-ddns: image: redis:alpine container_name: ali-ddns-redis-ddns # 设置 Redis 的 ...
Jedis
添加 POM 依赖123456789101112131415161718192021<dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.6.3</version> </dependency> <!-- fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version ...
Redis 事务
Redis 事务Redis 中的事务其实是一组命令的集合,命令会被序列化,在事务执行过程中,会按照顺序执行。 一致性、顺序性、排他性的执行一系列的命令 Redis 中单条命令是保证原子性的,但是 Redis 中的事务不保证原子性 Redis 事务没有隔离级别的概念,没有关系型数据库中事务隔离级别不同导致的问题(脏读、不可重复读、幽灵) Redis 的事务: 开启事务:MULTI 命令入队: 执行事务:EXEC,DISCARD 取消事务 使用MULTI开启事务,然后输入一系列命令入队,EXEC执行事务 1234567891011121314151617181920hominsu-redis-docker:0>MULTI"OK"hominsu-redis-docker:0>SET k1 v1"QUEUED"hominsu-redis-docker:0>SET k2 v2"QUEUED"hominsu-redis-docker:0>GET k2"QUEUED"hominsu- ...
Redis 特殊数据类型
Geospatial(地理空间) 定位?打车距离? Redis 的 GEO 可以计算地理位置信息,两地距离等等 GEO 很简单,只有以下六个命令: GETADD GEODIST GETHASH GEOPOS GEORADIUS GEORAIDUSBYMEMBER GETADDGEOADD key longitude latitude member:添加地理空间,longitude:经度,latitude:纬度,注意两级地址(北极、南极)不能添加 123456789101112hominsu-redis-docker:0>GEOADD china:city 116.23 40.22 beijing"1"hominsu-redis-docker:0>GEOADD china:city 121.48 31.40 shanghai"1"hominsu-redis-docker:0>GEOADD china:city 104.1 30.65 chengdu"1"hominsu-redis-docker:0& ...
Redis 基本数据类型
String(字符串)追加字符串123456hominsu-redis-docker:0>get name"hominsu"hominsu-redis-docker:0>APPEND name " very cool""17" // 17 是追加完字符串之后的长度hominsu-redis-docker:0>get name"hominsu very cool" 如果追加不存在的 key,会创建这个 key(相当于 set key) 1234hominsu-redis-docker:0>APPEND hello "Hello World""11"hominsu-redis-docker:0>get hello"Hello World" 字符串长度12345678hominsu-redis-docker:0>STRLEN name"17"hominsu-redis-docker: ...
Redis Key
对 Key 进行操作的 API全部清空12hominsu-redis-docker:0>FLUSHALL"OK" 清空当前 DB12hominsu-redis-docker:0>FLUSHDB"OK" 设置 key1234hominsu-redis-docker:0>set name hominsu"OK"hominsu-redis-docker:0>set age 19"OK" 查看全部 keys123hominsu-redis-docker:0>keys *1) "age"2) "name 判断某个键是否存在1234hominsu-redis-docker:0>EXISTS nam"0"hominsu-redis-docker:0>EXISTS name"1" 移动到另一个 DB12hominsu-redis-docker:0>move name 1"1&quo ...
Redis 学习笔记(持续更新)
Redis Key 对 Redis 中的键的进行操作的 API Redis 基本数据类型 Strings Lists Sets Hash Sorted Sets Redis 特殊数据类型 Geospatial HyperLogLogs Bitmaps Redis 事务 Jeids Redis 持久化
Windows-Terminal美化以及通过OhMyPosh美化PowerShell
通过 Powerline 来自定义 PowerShell,以提供Git状态提示符,再对 Windows Terminal 美化,得到一个优秀的终端体验 这里先放出微软的官方教程: https://docs.microsoft.com/zh-cn/windows/terminal/tutorials/powerline-setup#set-up-powerline-in-wsl-ubuntu 但是微软给出的文档有坑,到本文编写的时候文档还没有进行修改,不妨按照我的步骤来设置 安装OhMyPosh的字体如果不安装字体,最后终端可能会出现乱码 这里我们需要安装 Meslo LGM NF 字体,这是 Oh my Posh 官方推荐使用的字体,使用微软推荐的Cascadia Code PL 和 Cascadia Mono PL 会出现图标不显示的问题 Github链接: https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Meslo.zip 网络不好的可以通过Github的镜像站来下载 https://hub ...
替换VOC数据集中图片路径
前言在一次做项目的时候,团队分配任务做数据集,用labelimage来打标,汇总数据时发现xml中的图片路径各不相同,于是就写了这个工具来修改xml中的图片路径。 目录 前言 目录 原理 代码 仓库链接 使用方法 改进思路 原理先打开一个xml文件,观察一下它的结构 123456789101112131415161718192021222324252627<annotation> <folder>zhua_qu</folder> <filename>2021_03_16_16_42_11_296.jpg</filename> <path>D:\xyolo\images\train\2021_03_16_16_42_11_296.jpg</path> <source> <database>Unknown</database> </source> <size> <w ...
学习QT过程中的一些笔记
学习QT时候做的一些笔记 目录 目录 按钮常用控件API QT窗口体系 信号和槽 点击按钮关闭窗口 自定义信号和槽 当自定义信号和槽出现重载 无参信号和有参信号与槽连接 Lambda表达式 利用Lambda表达式实现点击按钮关闭窗口 QMainWindow 菜单栏 工具栏 状态栏 标签控件 浮动窗口 核心部件 资源文件 对话框 话框分类: 标准对话框 其他标准对话框 界面布局 控件 按钮组 QListWidget列表容器 按钮常用控件API123456789101112QPushButton * btn = new QPushButton;btn->setParent(this); // 设置父亲btn->setText("Hello World"); // 设置文本QPushButton* btn2 = new QPushButton("Hello World", this);btn2->move(100, 100); // 设置位置resize(800, 300); // ...