SpringBoot整合Redis
SpringBoot中的Redis在 SpringBoot2.x 之后,原来使用的jedis被替换为了lettuce?
jedis : 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接 池! 更像 BIO 模式
lettuce : 采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据 了,更像 NIO 模式
环境搭建与测试1.创建一个SpringBoot项目。选择要导入的依赖。最重要的是导入Redis依赖。
2.编写配置文件。使用WIndows本地的Redis(确保Redis运行)
3.在测试类中进行测试
五大数据类型
opsForValue() 操作字符串 类似String
opsForList() 操作List 类似List
opsForSet() 操作Set 类似Set
opsForZSet() 操作ZSet 类似ZSet
opsForHash() 操作Hash 类似Hash
特殊数据类型
opsForGeo()
opsForHyperLogLog()
1234567891011121 ...
Java通过Jedis操作Redis
Jedis什么是Jedis 是 Redis 官方推荐的 java连接开发工具! 使用Java 操作Redis 中间件!如果你要使用 java操作redis,那么一定要对Jedis 十分的熟悉!
测试1.首先创建一个Maven项目。导入一下依赖
123456789101112<!--导入jedis包--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency> <!--fastjson--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson&l ...
Redis三大特殊类型和事务
Geospatial 地理位置朋友的定位,附近的人,打车距离计算? Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!
geoadd
getpos
获得当前定位:一定是一个坐标值!
geodist
georadius
以给定的经纬度为中心, 找出某一半径内的元素
georadiusbymember
找出位于指定元素周围的其他元素!
geohash
返回一个或多个位置元素的 Geohash 表示
将二维的经纬度转换为一维的字符串,如果两个字符串越接近,那么则距离越近!
注意GEO 底层的实现原理其实就是 Zset!我们可以使用Zset命令来操作geo!
HyperloglogRedis 在 2.8.9 版本添加了 HyperLogLog 结构。
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内 ...
英语单词词汇2020版
四月第一天-29
单词
含义
spite
n.恶意,怨恨;不顾 vt 刁难,欺悔
pyramind
n.金字塔,锥体
tenure
n.任期;保佑权(土地),保有期;(教师等)终身职位
carbohydrate
n. 碳水化合物;糖类
query
n.询问,疑问; v.怀疑;表示疑虑;询问
luxury
n.奢侈,奢侈品
accommodate
vt.容纳;向…提供出处;使适应,顺应
eradicate
vt.根除,灭绝
tertiary
adj.第三位的,第三级的;第三代的
ranch
n.大牧场,饲养场
primarily
adv.首先;主要地
lotion
n.洁肤液;护肤液
setback
n.挫折,倒退;失败
carton
n(尤指装食品或液体的)硬纸盒;塑料盒;塑料管;(内装小盒的)大包装盒
restrain
vt.抑制,阻止,控制,遏制
abbreviation
n.缩写(词),缩略语
lottery
n.彩票,碰运气的事
gossip
n.流言蜚语;爱说长道短的人 vi.闲谈;传播流言蜚语,说 ...
Redis基础和五大数据类型
基础知识redis默认有16个数据库。默认使用的是第0个。可以使用select进行切换数据库
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 dbid is a number between 0 and ‘databases’-1
当你使用select命令切换数据库后redis 的命令提示符多了个 [数据库号]。例如切换成select 12命令提示符前则变成了127.0.0.1:6379[12]使用0数据库默认不显示数据库号。
清除当前数据库 flushdb
清除全部数据库的内容 flushall
Redis 是单线程的
官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据 机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所有就使用了单线程了! Redis 是C 语言写的,官方 ...
Redis的入门与安装
概述Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从)同步。
免费和开源!是当下最热门的 NoSQL 技术之一!也被人们称之为结构化数据库!
Redis 能干嘛?
内存存储、持久化,内存中是断电即失、所以说持久化很重要(rdb、aof) 2
效率高,可以用于高速缓存
发布订阅系统
地图信息分析
计时器、计数器(浏览量!)
Windows下安装Redis1.下载安装包 https://github.com/MicrosoftArchive/redis/releases
2.解压打开文件夹
redis-server开启redis服务,redis-cli连接 ...
NoSql概述
为什么要使用NoSql?单机MySql时代
在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。服务器根本没有什么压力!
在上述架构下,我们来看看数据存储的瓶颈是什么?
数据量的总大小一个机器放不下时。
数据的索引(B+ Tree)一个机器的内存放不下时。
访问量(读写混合)一个实例不能承受。
如果满足了上述1 or 3个时,只能对数据库的整体架构进行重构。
Memcached(缓存) + MySQL + 垂直拆分 (读写分离)随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引。开始比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带了了比较高的IO压力。在这个时候,Memcached就自然的成为一个非常时尚的技术产品。
网站80%的情况都是在读,每次都要去查询数据库的话就十分 ...
MyBatis-Plus代码生成器
代码生成器AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
环境准备创建一个employee表
12345678910111213SET FOREIGN_KEY_CHECKS=0;DROP TABLE IF EXISTS `employee`;CREATE TABLE `employee` ( `id` bigint(20) NOT NULL COMMENT 'ID', `name` varchar(255) DEFAULT NULL COMMENT '用户名', `gender` varchar(255) DEFAULT NULL COMMENT '性别', `version` int(10) DEFAULT '1' COMMENT '乐观锁', `deleted` int(1) ...
MyBatis-Plus条件构造器
条件构造器我们写一些复杂的sql就可以使用它来替代!
isNotNull()不为空 ge()大于等于
查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12
123456789@Testvoid contextLoads() { //查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12 QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.isNotNull("name") .isNotNull("email") .ge("age", 12); userMapper.selectList(wrapper).forEach(System.out::println);//和我们刚才学习的map对比一下!}
eq()等于
查询名字为kylin年龄为3岁
12345678@Testvoid test2() { / ...
MyBatis-Plus的CRUD及其扩展
测试环境在上一篇MyBatis-Plus概述中搭建完成!
Mapper CRUD 接口
Insert
Delete
Update
Select
配置日志我们现在所有的sql现在是不可见的,我们希望知道它是怎么执行的,所以我们必须要看日志。配置配置文件开启日志输出。
12# 配置日志 控制台输出mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
查看测试查询全部效果
插入操作userMapper.insert();参数是实体类对象
12345678910// 测试插入 @Test void testInsert() { User user = new User(); user.setName("kylin"); user.setAge(3); user.setEmail("zhang171346168@qq.com"); int result = us ...