首页 > 数据库 >Redis

Redis

时间:2024-12-01 15:21:35浏览次数:13  
标签:Redis redis 默认 Jedis jedis config

Redis

1.开启Redis服务

  1. 下载redis压缩包:Releases · microsoftarchive/redis (github.com)

  1. 解压压缩文件夹

  2. 运行redis服务端

    • 第一种开启方法:编写.bat文件,然后直接点击.bat文件 【本质是使用redis-server.exe + redis.windows.conf】

      .bat文件内容

      cd Redis-x64-3.0.504
      redis-server redis.windows.conf
      

    • 第二种开启方法:就是双击redis-server.exe运行服务即可。

  3. 开启成功后会有一个弹窗。弹窗关闭则服务关闭

2.使用redis服务

  1. 使用redis客户端来连接redis

    • 双击redis-cli.exe即可

  2. 使用Jredis

    看 3.使用Jredis详细描述

  3. Redis可视化工具

    • RedisDesktopManager一款好用的Redis桌面管理工具

3.使用Jredis详细描述

Jedis使用教程详解-CSDN博客

3.1基本使用
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>4.4.1</version>
</dependency>
//引入Redis驱动程序
import redis.clients.jedis.Jedis;

public class RedisJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost",6379);
        // 如果设置 Redis 服务的密码,需要进行验证,若没有则可以省去
        // jedis.auth("123456");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
        //设置 redis 字符串数据
        jedis.set("webkey", "swawdwa");
        // 获取存储的数据并输出
        System.out.println("redis 存储的字符串为: "+ jedis.get("webkey"));
    }
}

事务:Jedis使用教程详解-CSDN博客

同时Jedis也支持发布订阅:Jedis使用教程详解-CSDN博客

3.2Jedis连接池

连接池参数

public class RedisPoolUtils {
    private static JedisPool jedisPool = null;

    /**
     * redis服务器地址
     */
    private static String addr = "127.0.0.1";

    /**
     * redis服务器端口
     */
    private static int port = 6379;

    /**
     * redis服务器密码
     */
    private static String auth = "111111";


    static {
        try {
            JedisPoolConfig config = new JedisPoolConfig();
            // 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
            config.setBlockWhenExhausted(true);
            // 设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
            config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");
            // 是否启用pool的jmx管理功能, 默认true
            config.setJmxEnabled(true);
            // MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默认为"pool", JMX不熟,具体不知道是干啥的...默认就好.
            config.setJmxNamePrefix("pool");
            // 是否启用后进先出, 默认true
            config.setLifo(true);
            // 最大空闲连接数, 默认8个
            config.setMaxIdle(8);
            // 最大连接数, 默认8个
            config.setMaxTotal(8);
            // 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1
            config.setMaxWaitMillis(-1);
            // 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
            config.setMinEvictableIdleTimeMillis(1800000);
            // 最小空闲连接数, 默认0
            config.setMinIdle(0);
            // 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
            config.setNumTestsPerEvictionRun(3);
            // 对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断  (默认逐出策略)
            config.setSoftMinEvictableIdleTimeMillis(1800000);
            // 在获取连接的时候检查有效性, 默认false
            config.setTestOnBorrow(false);
            // 在空闲时检查有效性, 默认false
            config.setTestWhileIdle(false);
            // 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
            config.setTimeBetweenEvictionRunsMillis(-1);
            jedisPool = new JedisPool(config, addr, port, 3000, auth);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取 Jedis 资源
     *
     * @return
     */
    public static Jedis getJedis() {
        if (jedisPool != null) {
            return jedisPool.getResource();
        }
        return null;
    }

    /**
     * 释放Jedis资源
     */
    public static void close(final Jedis jedis) {
        if (jedis != null) {
            jedis.close();
        }
    }
}

连接池

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 连接池最大连接数
jedisPoolConfig.setMaxTotal(20);
// 只要是连接池的相关配置都可以通过JedisPoolConfig来进行修改
// redisHost和redisPort是实例的IP和端口
// redisPassword是实例的密码
// timeout,这里既是连接超时又是读写超时,从Jedis 2.8开始有区分connectionTimeout和soTimeout的构造函数
JedisPool jedisPool =  new  JedisPool(jedisPoolConfig, redisHost, redisPort, timeout, redisPassword);
// 执行命令如下:
Jedis jedis =  null;
try  {
     jedis = jedisPool.getResource();
    //  具体的命令
    //	jedis.set()
} catch  (Exception e) {
    logger.error(e.getMessage(), e);
}  finally  {
    // 注意这里不是关闭连接,在JedisPool模式下,Jedis会被归还给资源池。
    if  (jedis !=  null){
    	jedis.close();
	}
}
3.3其他
  1. 哨兵模式
  2. 集群模式
  3. Springboot当中使用Jedis
  4. Springboot源码分析

Jedis使用教程详解-CSDN博客

标签:Redis,redis,默认,Jedis,jedis,config
From: https://www.cnblogs.com/hellodeyang/p/18579812

相关文章

  • redis基本操作JG
    为什么学习redis,前几天有个需求,用到了redis库,之前学习过但仅限于大学的时候,这个时候差不多忘光了,需求测的时候也是现学的几个查询指令。印象最深的是开发设计的时候存储了10个不同key值但value(list字符串)相同的数据,当时问过为什么要存十个,解释为 “为了防止频繁的访问一个key导......
  • redis 的三种结构原理解析
    目录主从复制Sentinel(哨兵)Cluster集群总结主从复制工作原理:1.slave启动后,向master发送SYNC命令,master接收到SYNC命令后通过bgsave保存快照(即上文所介绍的RDB持久化),并使用缓冲区记录保存快照这段时间内执行的写命令2.master将保存的快照文件发送给slave,并继续记录......
  • Redis和MySQL之间如何进行数据同步
    原因为什么要进行Redis和MySQL的数据同步?性能优化:MySQL是关系型数据库,数据读取和存储相对复杂;Redis是内存数据库,读写速度极快,将热点数据存在Redis,可以大大提高系统的访问速度。数据一致性需求:两者的数据需要保持一定程度的一致性。实现方式基于数据库的触发器原理:......
  • Redis设计与实现第16章 -- Sentinel 总结1(初始化、主从服务器获取信息、发送信息、接
    Sentinel是Redis的高可用解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器替代已下线的主服务器......
  • Redis设计与实现第15章 -- 复制 总结(旧版复制 新版复制 部分重同步 复制 心跳检测)
    在Redis中,用户可以通过执行SLAVEOF命令或设置slaveof选项,让一个服务器(从服务器)去复制另一个服务器(主服务器),进行复制中的主从服务器双方的数据库将保存相同的数据。15.1旧版复制功能的实现Redis在2.8版本以前使用的,分为同步和命令传播两个操作:同步用于从服务器的数据库状......
  • Redis
    Key(键)DEL格式:DELkey[key...]删除给定的一个或多个key。不存在的key会被忽略。可用版本:>=1.0.0时间复杂度:O(N),N为被删除的key的数量。删除单个字符串类型的key,时间复杂度为O(1)。删除单个列表、集合、有序集合或哈希表类型的key,时间复杂度为O(M)......
  • redis基本操作
    为什么学习redis,前几天有个需求,用到了redis库,之前学习过但仅限于大学的时候,这个时候差不多忘光了,需求测的时候也是现学的几个查询指令。印象最深的是开发设计的时候存储了10个不同key值但value(list字符串)相同的数据,当时问过为什么要存十个,解释为 “为了防止频繁的访问一个key导......
  • redis初级之HyperLogLog
    HyperLogLog1.描述​ HyperLogLog是一种概率数据结构,也被简称为HLL,用于估计集合的基数(总数)。和集合的用法基本一致,在使用时可以当做是在操作一个集合,但是HLL与集合的不同点在于HLL作为一种概率数据结构,以完美的精度换区了高效的空间利用率。这意味着HLL与集合在存储相同数据量的......
  • Linux安装Redis并配置开机自启
    我这边是CentOS7系统的,然后我准备安装Redis6.2首先是去官网下载Redis安装包,可以看到这里面有所有的安装包,不会下载的可以直接找我要(Redis官方下载地址)下载下来后我们把它传到服务器,我这边是放在了/usr/local目录下,然后我们给它解压tar-zxvfredis-6.2.13.tar.gz......
  • redis初级之Lua脚本
    Lua脚本1.简介与用法简介​ Lua语言是在1993年由巴西一个大学研究小组发明,其设计目标是作为嵌入式程序移植到其他应用程序,它是由C语言实现的,虽然简单小巧但是功能强大,所以许多应用都选用它作为脚本语言,尤其是在游戏领域,例如大名鼎鼎的暴雪公司将Lua语言引入到“魔兽世界”这款......