Java使用Redis及其优化详解

目录
  • 前言
  • 开启远程连接
  • Jedis连接Redis
  • 封装Jedis进行操作

前言

所有坚韧不拔的努力迟早会取得报酬的。—— 安格尔

开启远程连接

Redis默认是不支持远程连接的,这里需要手动开启远程连接。

关闭本机IP绑定,允许远程连接。找到redis.conf中的bind:127.0.0.1将其注释。

开启密码校验。找到redis.conf中的requirepass去掉其注释并设置密码。

Jedis连接Redis

创建一个Maven项目,导入Jedis依赖。

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <type>jar</type>
            <scope>compile</scope>
</dependency>

测试链接是否成功。

public static void main(String[] args) {
        //创建Jedis对象 如果使用的是默认端口 则可忽略 (本次使用的是Docker创建的Redis)
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //密码认证
        jedis.auth("123456");
        //测试连接
        String res = jedis.ping();
        //输出PONG表示连接成功 抛出异常则失败
        System.out.println(res);
    }

使用Redis中写入一些值。不熟悉基本操作的可以查看Redis基本操作。

//获取值
System.out.println(jedis.get("name"));
//写入值
String result = jedis.set("gender", "male");
System.out.println(result);

紧接着再去redis中查看刚才写入的gender

Jedis中提供的方法和Redis的命令基本上是一样的,所以这里的操作就不做过多的赘述了。

封装Jedis进行操作

Jedis对象不是线城安全的,所以在实际开发中,一般我们都是通过连接池来获取,使用完成后再还给连接池。

public interface JedisCall {
    void call(Jedis jedis);
}
public class RedisDemo {

    private JedisPool jedisPool;

    public RedisDemo(){
        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
        //设置连接池最大空闲数
        config.setMaxIdle(100);
        //最大连接数
        config.setMaxTotal(300);
        //设置最大等待时间 -1表示无限制
        config.setMaxWaitMillis(30000);
        //开启空闲时间检查有效性
        config.setTestOnBorrow(true);
        //连接redis
        jedisPool = new JedisPool(config, "127.0.0.1", 6379, 30000);
    }

    public void execute(JedisCall jedisCall) {
    	//try resource
        try (Jedis jedis = jedisPool.getResource()) {
            jedisCall.call(jedis);
        }
    }
}
public class JedisTest {
    public static void main(String[] args) {
        RedisDemo redisDemo = new RedisDemo();
        redisDemo.execute(jedis -> {
            //TODO
			//做一些操作
        });
    }
}

到此这篇关于Java使用Redis及其优化详解的文章就介绍到这了,更多相关Java使用Redis优化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中操作Redis的详细方法

    目录 1.准备操作 1.1 新建工程 1.2 sca-jedis工程依赖 1.3 sca-tempalte工程依赖 1.4 测试是否可以连接Redis 1.5 修改redis.conf文件 2. 基于Jedis实现对redis中字符串的操作 3. 模式总结 4. 连接池JedisPool应用 5. 单例模式创建连接池 拓展:volatile关键字 6. 项目工程实践 6.1 分布式id 6.2 单点登陆 6.3 投票系统 7. StringRedisTemplate 应用 7.1 修改yml文件

  • 使用Java实现Redis限流的方法

    1.概述   限流的含义是在单位时间内确保发往某个模块的请求数量小于某个数值,比如在实现秒杀功能时,需要确保在10秒内发往支付模块的请求数量小于500个.限流的作用是防止某个段时间段内的请求数过多,造成模块因高并发而不可用. 2.zset有序集合相关命令与限流   zset也叫有序集合,是Redis的一种数据类型,在其中每个值(value)都会有一个对应的score参数,以此来描述该值的权重分值.可以通过如下形式的命令向zset有序集合里添加元素: zadd key score value   

  • Java之操作Redis案例讲解

    首先 下载 jedis.jar包 然后再 工程设置里面找到Libraries,点击+.添加下载好的jedis.jar包.点击OK退出即可 创建Java_Control_Redis类 测试链接 package ccit.redis; import redis.clients.jedis.Jedis; public class Java_Control_Redis { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis je

  • Java使用Redis及其优化详解

    目录 前言 开启远程连接 Jedis连接Redis 封装Jedis进行操作 前言 所有坚韧不拔的努力迟早会取得报酬的.-- 安格尔 开启远程连接 Redis默认是不支持远程连接的,这里需要手动开启远程连接. 关闭本机IP绑定,允许远程连接.找到redis.conf中的bind:127.0.0.1将其注释. 开启密码校验.找到redis.conf中的requirepass去掉其注释并设置密码. Jedis连接Redis 创建一个Maven项目,导入Jedis依赖. <dependency> &l

  • Java SpringCache+Redis缓存数据详解

    目录 前言 一.什么是SpringCache 二.项目集成Spring Cache + Redis 1.配置方式 三.使用Spring Cache 四.SpringCache原理与不足 1.读模式 2.写模式:(缓存与数据库一致) 五.总结 前言 这几天学习谷粒商城又再次的回顾了一次SpringCache,之前在学习谷粒学院的时候其实已经学习了一次了!!! 这里就对自己学过来的内容进行一次的总结和归纳!!! 一.什么是SpringCache Spring Cache 是一个非常优秀的缓存组件.自

  • java 较大数据量取差集,list.removeAll性能优化详解

    今天在优化项目中的考勤同步功能时遇到将考勤机中的数据同步到数据库, 两边都是几万条数据的样子,老代码的做法差不多半个小时,优化后我本机差不多40秒,服务器速度会更加理想. 两个数据集取差集首先想到的方法便是List.removeAll方法,但是实验发现jdk自带的List.removeAll效率很低 List.removeAll效率低原因: List.removeAll效率低和list集合本身的特点有关 : List底层数据结构是数组,查询快,增删慢 1.List.contains()效率没有h

  • java自旋锁和JVM对锁的优化详解

    目录 背景 好处 AtomicLong的实现 getAndIncrement方法 实验 缺点 适用场景 JVM对锁做了哪些优化? 自适应的自旋锁 锁消除 锁粗化 偏向锁/ 轻量级锁/ 重量级锁 锁升级 背景 先上图 由此可见,非自旋锁如果拿不到锁会把线程阻塞,直到被唤醒: 自旋锁拿不到锁会一直尝试 为什么要这样? 好处 阻塞和唤醒线程都是需要高昂的开销的,如果同步代码块中的内容不复杂,那么可能转换线程带来的开销比实际业务代码执行的开销还要大. 在很多场景下,可能我们的同步代码块的内容并不多,所以

  • java TreeMap源码解析详解

    java TreeMap源码解析详解 在介绍TreeMap之前,我们来了解一种数据结构:排序二叉树.相信学过数据结构的同学知道,这种结构的数据存储形式在查找的时候效率非常高. 如图所示,这种数据结构是以二叉树为基础的,所有的左孩子的value值都是小于根结点的value值的,所有右孩子的value值都是大于根结点的.这样做的好处在于:如果需要按照键值查找数据元素,只要比较当前结点的value值即可(小于当前结点value值的,往左走,否则往右走),这种方式,每次可以减少一半的操作,所以效率比较高

  • spring Boot与Mybatis整合优化详解

    SpringBoot官方文档http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ 关于spring-boot与mybatis整合优化方面的介绍,就是Mybatis-Spring-boot-starter的介绍: 1.取消spring-mybatis.xml配置 ①自动检测已存在的Datasource 之前,需要在spring-mybatis.xml中配置datasource的Bean,现在只需要在applicat

  • Java Benchmark 基准测试的实例详解

    Java Benchmark 基准测试的实例详解 import java.util.Arrays; import java.util.concurrent.TimeUnit; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Measurement; import org.openjdk

  • Java枚举的使用方法详解

     Java枚举的使用方法详解 前言  你代码中的flag和status,都应该用枚举来替代 很多人都说,枚举在实际开发中很少用到,甚至就没用到.因为,他们的代码往往是这样子的: public class Constant { /* * 以下几个变量表示英雄的状态 */ public final static int STATUS_WALKING = 0;//走 public final static int STATUS_RUNNINGING = 1;//跑 public final stati

  • Java并发之不可思议的死循环详解

    下面的代码将发生死循环: package com.zzj.concurrency; public class VolatileObjectTest implements Runnable{ private ObjectA objectA; // 加上volatile 就可以正常结束While循环了 public VolatileObjectTest(ObjectA a) { this.objectA = a; } public ObjectA getA() { return objectA; }

  • 基于Tomcat安全配置与性能优化详解

    Tomcat 是 Apache软件基金会下的一个免费.开源的WEB应用服务器,它可以运行在 Linux 和 Windows 等多个平台上,由于其性能稳定.扩展性好.免费等特点深受广大用户喜爱.目前,很多互联网应用和企业应用都部署在 Tomcat 服务器上,比如我们公司,哈. 之前我们 tomcat 都采用的是默认的配置,因此在安全方面还是有所隐患的.上周对测试环境的所有服务器的tomcat都做了安全优化,其间也粗略做了一些性能优化,这里就简单记录分享下! 一.版本安全 升级当前的tomcat版本

随机推荐