【数据库系列】
文章平均质量分 54
MongoDB、Redis、Mysql、Oracle相关文章
立小言先森
这个作者很懒,什么都没留下…
展开
-
Mybatis中sql数组为空判断
上述示例只能判断arrays数组不为null,那如果是个空数组呢。二、Mybatis xml中的sql通过if语句判定数组非空数组。原创 2024-09-18 19:36:32 · 441 阅读 · 0 评论 -
Mysql常用函数及技巧
lenght()函数在mysql中用于返回字符串的从航都,它返回的是字符串的字节数,而不是字符数,如果是UTF-8编码的多字节字符串,那么一个字符可能栈多个字节,如:汉字。concat_ws函数用于连接两个或多个字符串,并在他们之间插入一个指定的分隔符,如果任何参数为null,则会忽略此参数。mysql中的substring和substr函数是等价的,它们用于从一个字符串中提取子字符串。count函数用于计算表中的记录数或特定列的非null值数;用于在字符串左侧和右侧填充指定的字符,知道达到指定的长度。原创 2024-06-22 11:34:40 · 893 阅读 · 0 评论 -
Mysql的null值处理
在Mysql中,null用于标识缺失的或未知的数据,处理null值需要特别小心,因为在数据库中塔可能会导致不同的结果。原创 2024-06-12 21:35:07 · 568 阅读 · 0 评论 -
Mysql union语句
UNION 操作符在合并结果集时会去除重复行,而 UNION ALL 不会去除重复行,因此 UNION ALL 的性能可能更好,但如果你确实希望去除重复行,可以使用 UNION。mysql union操作符用于连接两个以上的select语句的结果组合到一个结果集,并去除重复的行,每个select语句的雷叔和对应位置的数据类型必须相同。原创 2024-06-12 21:33:16 · 522 阅读 · 0 评论 -
Mysql分组如何使用
rank()是mysql8.0新增的函数,为查询结果中的每一行分配一个排名,如果遇到相同的排序字段值则会分配相同的排名,下一个对应的值会跳过上一个值对应的数量排名值。执行上述查询后将会得到一个结果集,其中每一行都包含原始销售额,以及当天对应的总的销售额、销售数量。窗口函数不会减少结果集中的行数,而是会为每一行添加额外的计算列。上述sql未指定partition by分组,则会将整个sql按照条件date进行降序排列,并标记数字序号。group by语句会减少结果的行数。原创 2024-06-12 21:31:55 · 542 阅读 · 0 评论 -
Druid数据库配置密码加密openssl生成和代码生成两种方案
【代码】Druid数据库配置openssl生成秘钥并加密密码。原创 2023-05-26 21:00:00 · 1256 阅读 · 0 评论 -
Java查询Mysql数据库Decimal类型小数位自动截取
个人猜测是不同的数据库小数位精度不同导致的(没有查到直接的证据,有查到的老铁还请分享下);那我们可以反推上述sql计算后的数据类型都是Decimal,只是不同的数据库保留的精度不同,所以我们应该想办法将其转换为定长浮点数。最近发现一个有趣的问题,在oracle数据库中sql的select查询语句中的计算结果可以保留8位小数位返回到java客户端,而mysql只能返回五位小数,而且进行了四舍五入计算,如果涉及到钱的问题时就会发生多一分钱的问题,这是很严重的问题,所以必须想办法解决。原创 2023-04-10 19:52:14 · 1026 阅读 · 0 评论 -
Mysql驱动数据类型YEAR默认是Date数据类型
在mysql数据库驱动中数据库中year类型的数据默认是被转换为了Date类型,而Date类型是yyyy-MM-dd日期类型。原创 2023-03-11 13:07:29 · 646 阅读 · 0 评论 -
mybatis-typehandlers-jsr310对Java日期对象和JDBC日期对象转换器过期
最近看到公司很多项目中都引入了这个依赖,但是都说不清楚到底有什么用,只知道是mybatis用来对日期做转换的,所以就研究一下到底做什么的;原创 2023-02-15 19:30:48 · 1531 阅读 · 0 评论 -
Druid1.2.13版本发布,修复连接池默认指定connectTimeout和socketTimeout导致的问题
在druid连接池上一个版本新增了两个配置属性connectTimeout和socketTimeout两个超时配置,但是这两个配置默认是int类型,在一些场景下不生效;原创 2022-10-08 18:06:58 · 5984 阅读 · 1 评论 -
Druid1.2.12版本发布,新增连接池默认配置connectTimeout和socketTimeout详解
高级别的timeout依赖于低级别的timeout,只有当低级别的timeout无误时,高级别的timeout才能确保正常;如:当socket timeout出问题时,高级别statement timeout和transaction timeout都将失效。statement timeout无法处理网络连接失败时的超时,它能做的仅仅是限制statement的操作时间,网络连接失败时的timeout必须交由JDBC来处理,JDBC的socket timeout会受到操作系统socket timeout设置的影原创 2022-09-17 09:22:34 · 16450 阅读 · 6 评论 -
解锁《RedisTemplate和StringRedisTemplate的区别是什么?》
- StringRedisTemplate是RedisTemplate的子类,RedisTemplate是一个泛型类型,而StringRedisTemplate则不是。- 两者的序列化策略不同,StringRedisTemplate采用String的序列化策略,key和value都是采用此种策略;RedisTemplate则采用JDK的序列化策略;- 两者的数据不共通,原因就是上述所说的序列化策略不同的原因;原创 2022-09-03 14:36:45 · 329 阅读 · 0 评论 -
解锁新技能《Redis SETBIT用法》
##### SETBIT语法:```shSETBIT key offset value```- key:位图的键- offset:偏移量(0~2^32-1,位图最大512MB),最大偏移量值是4294967295- value:值0或1原创 2022-09-03 09:59:06 · 824 阅读 · 0 评论 -
解锁新技能《Redis ACL SETUSER命令》
ACL SETUSER指令根据指定的规则创建用户或修改一个已经存在用户的访问规则,可以指定用户访问key的权限、访问命令行指令的权限、访问所有通道的权限;原创 2022-09-03 09:57:19 · 1193 阅读 · 0 评论 -
解锁新技能《Docker Sentinel模式故障转移后出现日志Next failover delay: I will not start a failover before》
1:X 26 Aug 2022 17:25:07.660 # Next failover delay: I will not start a failover before Fri Aug 26 17:31:08 2022原创 2022-08-27 14:00:15 · 2101 阅读 · 1 评论 -
解锁新技能《Docker Sentinel NAT存在的问题》
运行在docker容器中的程序可以暴露在宿主机不同的端口号上;Sentinel模式可以指定多个容器内部运行相同的端口号,暴露出不同的端口号给外部服务(有时候会重新映射IP地址);运行在docker容器中的sentinel无法通过自动发现的方式和Redis服务和sentinel节点进行通信,应为自动发现的方式找到的IP或端口号都是容器内部的IP和端口号,所以是无法有效的进行通信;...原创 2022-08-27 13:58:01 · 494 阅读 · 0 评论 -
解锁新技能《docker如何搭建Redis哨兵模式》
Redis是C语言开发的一个开源的,遵从BSD协议的高性能键值对(key-value)内存数据库,可以用作缓存、数据库、消息中间件等。原创 2022-08-27 13:55:35 · 639 阅读 · 0 评论 -
Redisson分布式锁和同步器及源码分析
1.可重入锁(Reentrant Lock)基于Redis的Redisson分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口。同时还提供了异步、反射式和RxJava2标准的接口。RLock lock = redisson.getLock("anyLock");// 最常见的使用方法lock.lock();//尝试加锁,默认等待...原创 2020-03-19 13:24:08 · 820 阅读 · 0 评论 -
Redisson最新版starter模式集成
前言redisson-spring-boot-starter最新版本是3.12.3,支持两种配置方式,首先是完全兼容spring-boot-starter-data-redis的配置,第二可以使用redisson自己的配置方式。1.在maven pom文件中引入依赖 <dependency> <groupId>org.rediss...原创 2020-03-19 13:22:42 · 11502 阅读 · 1 评论 -
Redis分布式锁的正确实现方式
1.前言分布式锁一般有三种实现方式:数据库乐观锁基于Redis的分布式锁基于Zookeeper的分布式锁本文介绍的是基于Redis的分布式锁;2.可靠性首先,为了确保分布式锁可用,需要锁至少满足以下四个条件:互斥性,在任意时刻,只有一个客户端能持有锁。不会发生死锁,即使有一个客户端在持有锁的期间崩溃而没有主动释放锁,也能保证后续其它客户端能加锁。具有容错性。只要大部分Re...原创 2020-03-19 13:21:32 · 2094 阅读 · 0 评论 -
Redis存储乱码问题
package com.yaomy.sgrain.redis.config;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMa...原创 2020-03-19 13:19:40 · 3824 阅读 · 0 评论 -
Redis学习笔记:docker安装redis及挂载配置文件
1.下载redis 5.0版本的镜像git pull redis:5.02.下载redis.conf配置文件,下载地址(选择需要的版本配置文件):https://redis.io/topics/config3.创建redis容器对象,并且使用指定的配置文件启动,将配置文件挂载到本地方便修改docker run -v D:/work/redis/conf/redis.conf:/usr...原创 2019-11-25 18:55:13 · 1073 阅读 · 0 评论 -
MongoDB的安装包.msi后缀和.zip后缀的区别
MSI文件是windows的系统安装文件,包含一种产品所需的各种信息,在很多安装情形下安装(和卸载)程序所需的指令和数据,只要系统中包含windows installer支持就能够使用;二ZIP文件直接解压运行就可以了,只是这用不支持在线的升级软件版本。原创 2017-06-22 09:17:41 · 6238 阅读 · 0 评论 -
(七)Redis(Mac)集群配置 Redis Cluster
参考文章:http://doc.redisfans.com/topic/cluster-tutorial.html一、首先到官网 下载最新版本的redis https://redis.io/ ;然后将下载的包加压到/Users/yaomingyang/Documents/redis/路径下,再把路径/Users/yaomingyang/Documents/redis/redis-stab...原创 2018-01-13 21:23:54 · 1565 阅读 · 0 评论 -
(六)Redis(Windows)集群配置 Redis Cluster
参考文章:http://doc.redisfans.com/topic/cluster-tutorial.htmlRedis 集群的数据分片 Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念. Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽, 举个例子,比如...原创 2018-01-12 17:29:13 · 799 阅读 · 0 评论 -
(五)redis连接池(JedisPool)资源归还及timeout详解
一、连接池资源类详解都在注释上 package redis.v1.client.server;import org.apache.commons.pool2.impl.GenericObjectPoolConfig;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redi...原创 2018-01-12 13:34:44 · 36043 阅读 · 0 评论 -
(四)redis密码设置后失效
一、查看是否设置了密码验证 CONFIG get requirepass二、设置密码 CONFIG set requirepass "runoob"三、登录验证 AUTH password四、通过以上命令设置的密码在服务端重启后就消失了,要想让密码永久有效就需要修改配置文件中的密码设置redis.windows-service.conf#...原创 2018-01-11 20:08:25 · 2321 阅读 · 0 评论 -
(三)redis连接池详解
摘要: 原子性(atomicity): 一个事务是一个不可分割的最小工作单位,事务中包括的诸操作要么都做,要么都不做。 Redis所有单个命令的执行都是原子性的,这与它的单线程机制有关; Redis命令的原子性使得我们不用考虑并发问题,可以方便的利用原子性自增操作INCR实现简单计数器功能;一、首先我们看一个异常 Exception in thread "main" redis.cl...原创 2018-01-11 17:29:36 · 4243 阅读 · 0 评论 -
(二)redis发布订阅---取消订阅
接上一讲:一、取消订阅是使用监听器类RedisMsgPubSubListener中的unsubscribe方法,首先我们创建一个线程类: package redis.v1.client.thread;import redis.clients.jedis.Jedis;import redis.v1.client.common.PubSubCommons;import redis...原创 2018-01-11 15:39:38 · 6776 阅读 · 0 评论 -
(八)Redis集群常用命令、集群节点新增删除
参考文章:http://doc.redisfans.com/topic/cluster-tutorial.html一、cluster info :打印集群信息二、cluster nodes:列出集群中已知的所有节点(node),以及这些节点相关 信息可以看到上面有六个节点,三个主节点(master),三个备份节点(slave),其中有一个端口为7001的主节点前有myself节点代...原创 2018-01-14 18:00:38 · 12694 阅读 · 0 评论 -
(九)Redis集群节点超时时限(node timeout)配置cluster-node-timeout详解
参考文章:http://doc.redisfans.com/topic/cluster-spec.html集群节点的超时时限redis.conf配置默认值是: cluster-node-timeout 15000 一、节点失效检测1.集群中当一个节点向另一个节点发送PING命令,但是目标节点未在给定的时限内返回PING命令的回复时,那么发送命令的节点会将目标节点标记为PF...原创 2018-01-17 11:24:06 · 21460 阅读 · 0 评论 -
(十)Redis集群(JedisCluster)Jedis客户端命令详解
1.echo,打印一个特定的信息 message ,测试时使用 cluster.echo("你好,echo!")2.ping,使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG ;通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值(注:集群不支持) No way to dispatch this command ...原创 2018-01-18 11:30:07 · 4048 阅读 · 0 评论 -
(十一)Redis集群JedisCluster实现keys命令方法
由于JedisCluster集群类不支持像单机模式下的keys方法,下面的类我们就模拟keys命令方法:一、获取集群类 package redis.v1.client.server;import java.util.ArrayList;import java.util.Date;import java.util.HashSet;import java.util.Iterat...原创 2018-01-18 11:41:49 · 3719 阅读 · 0 评论 -
(十二)Redis集群JedisCluster数据库详解
(1)redis在单机模式下redis.conf配置文件中默认的数据库数量是16个, # Set the number of databases. The default database is DB 0, you can select# a different one on a per-connection basis using SELECT <dbid> where...原创 2018-01-18 13:25:53 · 6830 阅读 · 1 评论 -
(十三)Redis持久化persistence详解
Redis持久化Redis提供了多种不同级别的持久化方案:RDB持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot);AOF持久化记录服务器执行的所有写命令,并在服务器启动时,通过重新执行这些命令来还原数据集,AOF中的命令全部以 Redis协议的格式来保存,新命令会被追加到文件末尾,Redis还可以在后台对AOF文件进行重写(rewrit...原创 2018-01-19 10:01:27 · 782 阅读 · 0 评论 -
Redis在Windows下启动及基本命令
1.进入redis根目录,输入下面的指令启动服务器:redis-server.exe redis.windows.confC:\software\tool\redis\Redis-x64-3.2.100&gt;redis-server.exe redis.windows.conf _._ _.-``__ ''-._ ...原创 2018-09-14 20:37:26 · 71339 阅读 · 3 评论 -
MongoDB之shell遍历db.getCollectionNames()表集合
获取数据库中的所有文档集合var t=db.getCollectionNames()通过for循环的方式遍历文档集合for(var i=0;i<t.length;i++){ print(t[i])}通过forEach方式遍历文档集合t.forEach(function(item){ print(item) })...原创 2018-10-05 14:39:37 · 8125 阅读 · 0 评论 -
Mongodb脚本批量替换文档中字段的值(while或者forEach)
首先查询出符合条件的数据,然后通过循环一条一条的更新数据var cursor=db.cs_article_secret_reference.find({summary:{$regex:/\\*。,/}}).sort({_id:-1})while(cursor.hasNext()){ var obj = cursor.next(); db.cs_article_secret_...原创 2019-02-22 23:09:37 · 4008 阅读 · 0 评论 -
(一)redis发布订阅
一、创建Jedis客户端 package redis.v1.client.server;import redis.clients.jedis.Jedis;public enum RedisClient { Clent; private static Jedis jedis = null; public static Jedis getJedis() { if(...原创 2018-01-11 15:32:33 · 823 阅读 · 0 评论 -
Mongodb时间字段更新$currentDate
一、$currentDate设置字段的值为当前时间,值为Date类型或者Timestamp时间戳类型,默认是Date类型$currentDate操作符的使用格式是:{ $currentDate: { : , ... } }字段可以是一个boolean true类型设置当前字段是日期Date类型,或者一个文档{ $type: "timestamp" }或者{ $type: "da原创 2017-12-06 10:51:21 · 15488 阅读 · 1 评论