Redis GEO Redis GEO Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。 Redis GEO 操作方法有: geoadd:添加地理位置的坐标。 geopos:获取地理位置的坐标。 geodist:计算两个位置之间的距离。 georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。 georadiusbymember:根 2024-03-17 Software BackEnd Database Redis 数据类型 特殊数据类型
Redis HyperLogLog Redis HyperLogLog Redis 在 2.8.9 版本添加了 HyperLogLog 结构。 Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的,并且是很小的。 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个 2024-03-17 Software BackEnd Database Redis 数据类型 特殊数据类型
Redis 底层数据结构 Redis 底层数据结构 SDS(动态字符串) SDS是simple dynamic string的缩写,Redis中所有场景中出现的字符串,基本都是由SDS来实现的。 所有非数字的key,例如set msg "hello world" 中的key msg 字符串数据类型的值,例如`` set msg "hello world”中的msg的值”hello wolr 2024-03-17 Software BackEnd Database Redis 数据类型
Redis BitMap Redis BitMap BitMap通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。 Bitmaps 本身不是一种数据结构,实际上它就是字符串,但是它可以对字符串的位进行操作。 Bitmaps 单独提供了一套命令,所以在 Redis 中使用 Bitmaps 和使用字符串的方法不太相同。 可以把 Bitmaps 想象成一个以位为单位的数组,数组的每个单元只能存储0和 2024-03-17 Software BackEnd Database Redis 数据类型 特殊数据类型
Redis Zset Redis Zset Redis 有序集合(sorted set)和集合一样也是String类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数,Redis正是通过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是唯一的,但分数(score)却可以重复。 集合是通过Hash表实现的,所以添加,删除,查找的复杂度都是O(1),集合中最大的成员数为 232 2024-03-17 Software BackEnd Database Redis 数据类型 基础数据类型
Redis Set Redis Set Redis 的 Set 是 String 类型的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过Hash表实现的,所以添加,删除,查找的复杂度都是 O(1) 集合中最大的成员数为 232 - 1 (4294967295,每个集合可存储40多亿个成员) 实例 12345678910111213$ SADD testkey redis( 2024-03-17 Software BackEnd Database Redis 数据类型 基础数据类型
Redis List Redis List Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素(4294967295,每个列表超过40亿个元素) 实例 1234567891011$ LPUSH testkey redis(integer) 1$ LPUSH testkey mongodb(integer) 2$ L 2024-03-17 Software BackEnd Database Redis 数据类型 基础数据类型
Redis String Redis String Redis 字符串数据类型的相关命令用于管理 Redis 字符串值,基本语法如下: 1$ COMMAND KEY_NAME 实例 1234$ SET testKey redisOK$ GET testKey"redis" 在以上实例中我们使用了 SET 和 GET 命令,键为 testKey 可通过设计key为key:{父属性}:{子属性}…存储 2024-03-17 Software BackEnd Database Redis 数据类型 基础数据类型
Redis Hash Redis Hash Redis Hash是一个 String类型的 field(字段)和 value(值)的映射表,类似于Map,Hash特别适合用于存储对象。 Redis 中每个 Hash可以存储 232 - 1 键值对(40多亿) 1234567891011127.0.0.1:6379> HMSET testKey name "redis tutorial" 2024-03-17 Software BackEnd Database Redis 数据类型 基础数据类型
Redis 用户签到 Redis 用户签到 MySQL 如果使用关系型数据库来实现签到功能,核心表(user_sign)如下: 字段名 描述 id 数据表主键(AUTO_INCREMENT) user_id 用户ID sign_date 签到日期(如 2021-03-09) amount 连续签到天数 签到:插入一条记录,并更新连续签到天数。 查询:根据签到日期查询。 统 2024-03-17 Software BackEnd Database Redis 实例
Redis 发布订阅 Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 下图展示了频道 channel1 ,以及订阅这个频道的三个客户端——client2 , client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时,这个消 2024-03-17 Software BackEnd Database Redis
Redis key Redis key Redis的键key只能为字符串。 Redis 键命令用于管理 Redis 的键。 1$ COMMAND KEY_NAME 实例 1234$ SET testkey redisOK$ DEL testkey(integer) 1 在以上实例中 DEL 是一个命令, testkey 是一个键,如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integ 2024-03-17 Software BackEnd Database Redis
Redis Spring Boot整合 Redis Spring Boot整合 pom.xml 在Spring Boot2.x之后,原来使用的jedis被替换为lettuce jedis使用直连server,多线程操作时有安全隐患,可使用jedis pool连接池改善,类似BIO模式。 lettuce底层使用netty实例可以在多个线程中进行共享,不存在线程不安全的情况,可以减少线程数据,类似NIO模式。 1234<depen 2024-03-17 Software BackEnd Database Redis
Oracle 概念与组成 Oracle 概念与组成 数据库 Oracle数据库是数据的物理存储,这就包括(数据文件ORA或者DBF,控制文件,联机日志,参数文件) 其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库,可以看作是Oracle就只有一个大数据库。 实例 一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和 2024-03-17 Software BackEnd Database Oracle
Oracle 表连接 Oracle 表连接 概述 即查询的时候同时需要多张表(特别是存在外键关系的),此时需要多张表之间的值进行连接。 目前 SQL 标准提出过两种连接查询,第一种是较早的 SQL92 标准,第二种是目前使用广泛的较新的 SQL99 标准。 92 形式简单,但编写较为冗长, 99 不仅在底层得到优化,而且形式看上去更加一目了然,逻辑性更强,一般建议使用 99 标准。 92语法 多张表需要全部放在 2024-03-17 Software BackEnd Database Oracle
Oracle 查询 Oracle 查询 虚表 dual 是一个虚表,虚拟表,是用来构成 select 的语法规则, oracle 保证 dual 里面永远只有一条记录。 该表只有一行一列,它和其他表一样,可以执行插入,更新,删除操作,还可以执行 drop 操作,但是不要去执行 drop 表的操作,否则会使系统出错。 dual 主要用来选择系统变量或是求一个表达式的值,如果不需要从具体的表来取得表中数据,而是单纯地味 2024-03-17 Software BackEnd Database Oracle
Oracle 函数 Oracle 函数 nvl (表达式1,表达式2) 如果表达式1为空值,nvl返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值,其表达式的值可以是数字型,字符型和日期型,但是表达式1和表达式2的数据类型必须为同一个类型。 实例 12--将薪资与奖金合并为月收入,如果奖金为null则转换为0select ename,sal,comm,sal+n 2024-03-17 Software BackEnd Database Oracle
Oracle DDL Oracle DDL 基于其他表新建表 1create tablename as 查询语句。 修改表结构 修改表名 1rename 原表名 to 新表名。 修改列名 1alter table 表名 rename column 列名 to 新列名。 修改字段类型 1alter table 表名 modify(字段,类型) 2024-03-17 Software BackEnd Database Oracle
Oracle rownum&rowid Oracle rownum&rowid 分页的核心就是计算每页多少记录和总页数以及第几页,每一页的数据则只需计算起始的记录和结束记录即可。 rownum rownum 不是一个真实存在的列,它是用于从查询返回的行的编号,返回的第一行分配的是 1,第二行是 2,依此类推,这个伪字段可以用于限制查询返回的总行数。 1select * from emp where rownum < 2024-03-17 Software BackEnd Database Oracle
Elasticsearch 文档 Elasticsearch 文档 Elasticsearch 提供单文档API和多文档API,其中API调用分别针对单个文档和多个文档。 创建文档 当使用特定映射对相应索引发出请求时,它有助于在索引中添加或更新 JSON 文档。 type 在 Elasticsearch 中逐渐被弃用,使用 _doc 代替指定 type 123456789PUT /users/_doc/1{ 2024-03-17 Software BackEnd Database ElasticSearch