jedis

redis主从、集群、哨兵

假装没事ソ 提交于 2021-01-04 17:34:06
redis的主从、集群、哨兵 参考: https://blog.csdn.net/robertohuang/article/details/70741575 https://blog.csdn.net/robertohuang/article/details/70766809 https://blog.csdn.net/robertohuang/article/details/70768922 https://blog.csdn.net/robertohuang/article/details/70833231 https://blog.csdn.net/u011204847/article/details/51307044 Redis简介及单机版编译安装详细教程 1.Redis简介 Redis(Remote Dictionary Server)是一种Nosql技术,它是一个开源的高级kv数据结构存储系统,它经常拿来和Memcached相比较,但是Memcached不提供持久化的数据保存机制而Redis可以将数据存在磁盘中,Redis不仅仅是能够存储key和value这种简单的键值对,还能存储例如集合、hash表、列表、字典等。Redis在整个运行过程中,数据统统都是存储在内存中的,因此,性能是相当高的,由于此特性,Redis对于内存的要求比较高

redis单机连接池

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-03 07:18:59
一、配置文件 1. db.properties配置文件 #IP地址 redis.ip = 127.0 . 0.1 #端口号 redis.port = 6379 #最大连接数 redis.max.total = 20 #最大空闲数 redis.max.idle = 10 #最小空闲数 redis.min.idle = 2 #效验使用可用连接 redis.test.borrow = true #效验归还可用连接 redis.test. return = false 2. pom.xml文件 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 二、java代码 public class RedisPool { private static JedisPool pool ; // jedis连接池 private static Integer maxTotal = Integer.parseInt(PropertiesUtil.getProperty( " redis.max.total " , " 20 " )); // 最大连接数 private static Integer maxIdle =

redis 的简明教程

萝らか妹 提交于 2021-01-01 09:42:25
redis 的简明教程 redis 结合ssm使用 一、Redis使用 1、jedis操作redis非关系型数据库 2、spring 集成redis 二、两者区别: 一、Redis使用 1、jedis操作redis非关系型数据库 (1)、pom.xml <!-- redis客户端jar --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.0</version> </dependency> (2)、简单操作redis Jedis jedis = new Jedis(localhost, 6379); // 设置连接 jedis.auth( ""); // 连接时密码 jedis.set( "name","meepo"); // set key-value jedis.get( "name") // get key对应的值 jedis.del( "name"); // 删除key对应的记录 2、spring 集成redis (1)、pom.xml <!-- spring-redis实现 --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data

redis学习笔记-redis的安装

試著忘記壹切 提交于 2020-12-26 05:40:16
Window 下安装 下载地址: https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip 压缩包到 随便哪个盘,解压后,将文件夹重新命名为 redis 。 打开一个 cmd 窗口 使用cd命令切换目录到 D :\redis 运行 redis-server.exe redis.windows.conf 。 如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面: 这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。 切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 。 设置键值对 set myKey abc 取出键值对 get myKey Ubuntu 下安装 在 Ubuntu 系统安装 Redis 可以使用以下命令: $sudo apt - get update $sudo apt - get install redis - server 启动 Redis $ redis - server 查看 redis 是否启动? $

基于netty手写Tomcat

回眸只為那壹抹淺笑 提交于 2020-12-24 06:05:19
作者: MovW 原文:http://suo.im/5Ar7t8 netty 简介 Netty一个基于NIO的客户、服务器端的编程框架 1.环境准备 maven依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.42.Final</version> </dependency> 12345 RequestMethodEnum 请求方式 public enum RequestMethodEnum { GET( "GET" ), POST( "POST" ); public String code; RequestMethodEnum(String code) { this.code=code; }}12345678 ParentServlet 父类servlet public abstract class ParentServlet { public void service(ParentRequest request, ParentResponse response) throws Exception { //service 方法决定调用doGet、doPost; if (RequestMethodEnum.GET.code

如何防止秒杀抢购超卖?

*爱你&永不变心* 提交于 2020-12-23 14:04:08
可以利用redis的事务加上watch监听方法,具体代码如下! 1 package com.github.distribute.lock.redis; 2 3 import java.util.List; 4 import java.util.Set; 5 import java.util.concurrent.ExecutorService; 6 import java.util.concurrent.Executors; 7 8 import redis.clients.jedis.Jedis; 9 import redis.clients.jedis.Transaction; 10 11 /** 12 * redis乐观锁实例 13 * @author linbingwen 14 * 15 */ 16 public class OptimisticLockTest { 17 18 public static void main(String[] args) throws InterruptedException { 19 long starTime= System.currentTimeMillis(); 20 21 initPrduct(); 22 initClient(); 23 printResult(); 24 25 long endTime= System

[Redis] Redis基础用法、高级特性与性能调优以及缓存穿透等分析

Deadly 提交于 2020-12-18 02:52:58
一、Redis介绍   Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库、缓存服务或消息服务使用。Redis支持多种数据结构,包括字符串、哈希表、链表、集合、有序集合、位图、Hyperloglogs等。Redis具备LRU淘汰、事务实现、以及不同级别的硬盘持久化等能力,并且支持副本集和通过Redis Sentinel(哨兵)实现的高可用方案,同时还支持通过Redis Cluster(集群)实现的数据自动分片能力。   Redis的主要功能都基于单线程模型实现,也就是说Redis使用一个线程来服务所有的客户端请求,同时Redis采用了非阻塞式IO,并精细地优化各种命令的算法时间复杂度,这些信息意味着: Redis是线程安全的(因为只有一个线程),其所有操作都是原子的,不会因并发产生数据异常 Redis的速度非常快(因为使用非阻塞式IO,且大部分命令的算法时间复杂度都是O(1)) 使用高耗时的Redis命令是很危险的,会占用唯一的一个线程的大量处理时间,导致所有的请求都被拖慢。(例如时间复杂度为O(N)的KEYS命令,严格禁止在生产环境中使用) 二、Redis数据结构及常用的命令 1 key设置注意事项   Redis采用Key-Value型的基本数据结构,任何二进制序列都可以作为Redis的Key使用(例如普通的字符串或一张JPEG图片)  

利用redis,心跳机制做设备是否在线!经典教程!粘贴复制即可!

偶尔善良 提交于 2020-12-17 20:51:53
1.引入pom依赖 <!-- 整合 redis --> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-data-redis </ artifactId > </ dependency > <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> < dependency > < groupId > redis.clients </ groupId > < artifactId > jedis </ artifactId > < version > 2.9.0 </ version > </ dependency > 2. 修改redis配置文件 redis.windows.conf 配置文件找到右边这个放开 : notify-keyspace-events Ex redis.windows-service.conf配置文件搜索 “PUBLISH __keyevent@0__:del foo ” 在下面一行加上 : PUBLISH __keyevent@0__:OpsType 3. redis配置类 ,两个redis配置类。一个redis操作类

redis在springcloud中的使用

我与影子孤独终老i 提交于 2020-12-17 06:11:31
1.redis的使用场景 做中央缓存,通过空间换时间 特点:快、安全、持久、可用jedis java客户端 启动服务命令:redis-server.exe redis.conf 2.优化的好处 每次请求都要从数据库中查询数据,对数据库服务器压力很大; 3.常用的缓存实现 jpa/mybits的二级缓存,但是不能支持集群;所以用到了redis 4.怎么实现交互 前台请求-》先从redis中查询数据,有就之久返回数据;没有查询到数据就从数据库中查询,并同步到redis中,再返回前台; 5.保证redis中数据与数据库中的数据一致 修改时,先修改数据库中的数据再同步到redis中 6.redis怎么储存对象 序列化和 json字符串(采纳),,,一般使用json字符串的方式 --1:存: 就是把数据库的数据存到 redis(json字符串) --2:取: 就是把 redis(json字符串)的数据转换成对象 --3对象与json字符串的转换 我们使用到了 Alibaba:fastjson---功能很强大 7.redis的项目实战 --导包 <!--redis的依赖--> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> < dependency > < groupId >redis.clients </

redis事务

北城余情 提交于 2020-12-15 12:48:58
Jedis jedis = redisUtil .getJedis(); String tokenExists = jedis .get( tokenKey ); Transaction transaction = jedis .multi(); transaction .watch( tokenKey ); if ( tokenExists != null && tokenExists .equals(token)){ // 如果在 处 理判 断 成功 执 行 删 除之 间 , 间 隔 10s ,正好第二 个请 求 过来 就 会 返回 两个 true ,不符合原子性 jedis .del( tokenExists ); jedis .close(); } List < Object > list = transaction .exec(); if ( list != null && list .size()> 0 && list .get( 0 ).equals( "1" )){ return true ; } else { return false ; } 来源: oschina 链接: https://my.oschina.net/u/3668429/blog/4807642