下载redis windows版:
redis-2.4.5-win32-win64.zip
开启 redis-server 服务
1.pom.xml
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--Redis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.0.0</version> <type>jar</type> <scope>compile</scope> </dependency> </dependencies>
2.JedisPool
/** * jedis池使用 * */ public class MyJedisPool { // jedis池 private static JedisPool pool; // jedis实例 private static Jedis jedis; // 静态代码初始化池配置 static { // 加载redis配置文件 ResourceBundle bundle = ResourceBundle.getBundle("redis"); if (bundle == null) { throw new IllegalArgumentException("[redis.properties] is not found!"); } // 创建jedis池配置实例 JedisPoolConfig config = new JedisPoolConfig(); // 设置池配置项值 config.setMaxActive(Integer.valueOf(bundle.getString("redis.pool.maxActive"))); config.setMaxIdle(Integer.valueOf(bundle.getString("redis.pool.maxIdle"))); config.setMaxWait(Long.valueOf(bundle.getString("redis.pool.maxWait"))); config.setTestOnBorrow(Boolean.valueOf(bundle.getString("redis.pool.testOnBorrow"))); config.setTestOnReturn(Boolean.valueOf(bundle.getString("redis.pool.testOnReturn"))); // 根据配置实例化jedis池 pool = new JedisPool(config, bundle.getString("redis.ip"), Integer.valueOf(bundle.getString("redis.port"))); // 从jedis池中获取一个jedis实例 jedis = pool.getResource(); } /** * 测试jedis池方法 */ @Test public void test1() { // 获取jedis实例后可以对redis服务进行一系列的操作 jedis.set("name", "xmong"); System.out.println(jedis.get("name")); jedis.del("name"); System.out.println(jedis.exists("name")); // 释放对象池,即获取jedis实例使用后要将对象还回去 pool.returnResource(jedis); } /** * Redis存储初级的字符串 CRUD */ @Test public void testBasicString() { // -----添加数据---------- jedis.set("name", "minxr");// 向key-->name中放入了value-->minxr System.out.println(jedis.get("name"));// 执行结果:minxr // -----修改数据----------- // 1、在原来基础上修改 jedis.append("name", "jarorwar"); // 很直观,类似map 将jarorwar append到已经有的value之后 System.out.println(jedis.get("name"));// 执行结果:minxrjarorwar // 2、直接覆盖原来的数据 jedis.set("name", "闵晓荣"); System.out.println(jedis.get("name"));// 执行结果:闵晓荣 // 删除key对应的记录 jedis.del("name"); System.out.println(jedis.get("name"));// 执行结果:null /** * mset相当于 jedis.set("name","minxr"); jedis.set("jarorwar","闵晓荣"); */ jedis.mset("name", "minxr", "jarorwar", "闵晓荣"); System.out.println(jedis.mget("name", "jarorwar")); } /** * jedis操作Map */ @Test public void testMap() { Map<String, String> user = new HashMap<String, String>(); user.put("name", "minxr"); user.put("pwd", "password"); jedis.hmset("user", user); // 取出user中的name,执行结果:[minxr]-->注意结果是一个泛型的List // 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变参数 List<String> rsmap = jedis.hmget("user", "name"); System.out.println(rsmap); // 删除map中的某个键值 // jedis.hdel("user","pwd"); System.out.println(jedis.hmget("user", "pwd")); // 因为删除了,所以返回的是null System.out.println(jedis.hlen("user")); // 返回key为user的键中存放的值的个数1 System.out.println(jedis.exists("user"));// 是否存在key为user的记录 返回true System.out.println(jedis.hkeys("user"));// 返回map对象中的所有key [pwd, name] System.out.println(jedis.hvals("user"));// 返回map对象中的所有value [minxr, password] Iterator<String> iter = jedis.hkeys("user").iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + jedis.hmget("user", key)); } } /** * jedis操作List */ @Test public void testList() { // 开始前,先移除所有的内容 jedis.del("java framework"); System.out.println(jedis.lrange("java framework", 0, -1)); // 先向key java framework中存放三条数据 jedis.lpush("java framework", "spring"); jedis.lpush("java framework", "struts"); jedis.lpush("java framework", "hibernate"); // 再取出所有数据jedis.lrange是按范围取出, // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有 System.out.println(jedis.lrange("java framework", 0, -1)); } /** * jedis操作Set */ @Test public void testSet() { // 添加 jedis.sadd("sname", "minxr"); jedis.sadd("sname", "jarorwar"); jedis.sadd("sname", "闵晓荣"); jedis.sadd("sname", "noname"); // 移除noname jedis.srem("sname", "noname"); System.out.println(jedis.smembers("sname"));// 获取所有加入的value System.out.println(jedis.sismember("sname", "minxr"));// 判断 minxr 是否是sname集合的元素 System.out.println(jedis.srandmember("sname")); System.out.println(jedis.scard("sname"));// 返回集合的元素个数 } @Test public void test() throws InterruptedException { // keys中传入的可以用通配符 System.out.println(jedis.keys("*")); // 返回当前库中所有的key [sose, sanme, name, jarorwar, foo, sname, java framework, // user, braand] System.out.println(jedis.keys("*name"));// 返回的sname [sname, name] System.out.println(jedis.del("sanmdde"));// 删除key为sanmdde的对象 删除成功返回1 删除失败(或者不存在)返回 0 System.out.println(jedis.ttl("sname"));// 返回给定key的有效时间,如果是-1则表示永远有效 jedis.setex("timekey", 10, "min");// 通过此方法,可以指定key的存活(有效时间) 时间为秒 Thread.sleep(5000);// 睡眠5秒后,剩余时间将为<=5 System.out.println(jedis.ttl("timekey")); // 输出结果为5 jedis.setex("timekey", 1, "min"); // 设为1后,下面再看剩余时间就是1了 System.out.println(jedis.ttl("timekey")); // 输出结果为1 System.out.println(jedis.exists("key"));// 检查key是否存在 System.out.println(jedis.rename("timekey", "time")); System.out.println(jedis.get("timekey"));// 因为移除,返回为null System.out.println(jedis.get("time")); // 因为将timekey 重命名为time 所以可以取得值 min // jedis 排序 // 注意,此处的rpush和lpush是List的操作。是一个双向链表(但从表现来看的) jedis.del("a");// 先清除数据,再加入数据进行测试 jedis.rpush("a", "1"); jedis.lpush("a", "6"); jedis.lpush("a", "3"); jedis.lpush("a", "9"); System.out.println(jedis.lrange("a", 0, -1));// [9, 3, 6, 1] System.out.println(jedis.sort("a")); // [1, 3, 6, 9] //输入排序后结果 System.out.println(jedis.lrange("a", 0, -1)); } }
3. redis.properties
#最大分配的对象数 redis.pool.maxActive=1024 #最大能够保错误的Unicode字符串! redis.pool.maxIdle=200 #当池内没有返回对象时,最大等待时间 redis.pool.maxWait=1000 #当调错误的Unicode字符串! redis.pool.testOnBorrow=true #当调错误的Unicode字符串! redis.pool.testOnReturn=true #IP redis.ip=127.0.0.1 #Port redis.port=6379
另外,补充 redis 的工具类
JedisUtil
import java.util.ResourceBundle; import org.apache.log4j.Logger; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public final class JedisUtil { private static final Logger LOGGER = Logger.getLogger(JedisUtil.class); private static int DEFAULT_DB_INDEX = 0; private static JedisPool jedisPool = null; private JedisUtil() { // private constructor } private static void initialPool() { try { ResourceBundle bundle = ResourceBundle.getBundle("redis"); if (bundle == null) { throw new IllegalArgumentException("[redis.properties] is not found!"); } // 创建jedis池配置实例 JedisPoolConfig config = new JedisPoolConfig(); // 设置池配置项值 String address = bundle.getString("redis.ip"); int port = Integer.valueOf(bundle.getString("redis.port")); LOGGER.info("Redis server info: " + address + ":" + port); String strDbIndex = bundle.getString("redis.db_index"); if (strDbIndex != null) { DEFAULT_DB_INDEX = Integer.valueOf(strDbIndex); } String strMaxActive = bundle.getString("redis.pool.maxActive"); if (strMaxActive != null) { config.setMaxActive(Integer.valueOf(strMaxActive)); } String strMaxIdle = bundle.getString("redis.pool.maxIdle"); if (strMaxIdle != null) { config.setMaxIdle(Integer.valueOf(strMaxIdle)); } String strMaxWait = bundle.getString("redis.pool.maxWait"); if (strMaxWait != null) { config.setMaxWait(Long.valueOf(strMaxWait)); } String strTestOnBorrow = bundle.getString("redis.pool.testOnBorrow"); if (strTestOnBorrow != null) { config.setTestOnBorrow(Boolean.valueOf(strTestOnBorrow)); } String strTestOnReturn = bundle.getString("redis.pool.testOnReturn"); if (strTestOnReturn != null) { config.setTestOnReturn(Boolean.valueOf(strTestOnReturn)); } String strTimeout = bundle.getString("redis.pool.timeout"); int timeout = 2000;// 默认2000 if (strTimeout != null) { timeout = Integer.valueOf(strTimeout); } // 根据配置实例化jedis池 jedisPool = new JedisPool(config, address, port, timeout); } catch (Exception e) { e.printStackTrace(); } finally { } } public synchronized static Jedis getJedisInstance() { if (jedisPool == null) { initialPool(); } try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); resource.select(DEFAULT_DB_INDEX); return resource; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } } public synchronized static Jedis getJedisInstance(final int dbIndex) { if (jedisPool == null) { initialPool(); } try { if (jedisPool != null) { Jedis resource = jedisPool.getResource(); resource.select(dbIndex); return resource; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } } public static void returnResource(final Jedis jedis) { if (jedis != null) { jedisPool.returnResource(jedis); } } }
相关推荐
本地连接redis的demo,可以是指对应key的过期时间 ,
在这个“完整的java操作redis demo”中,我们不仅可以看到如何使用Jedis进行基本的Redis操作,还能学习到如何结合Java处理Excel数据,这在数据导入导出或者数据分析场景中非常实用。 首先,我们要了解Jedis的基本...
这个"RedisDemo.rar"压缩包很可能包含了一个使用StackExchange.Redis驱动的C#示例项目,帮助开发者了解如何在C#环境中集成和操作Redis。 1. **安装StackExchange.Redis**:在C#项目中使用StackExchange.Redis,首先...
本教程将通过一个名为 "Spring boot redis demo" 的入门级项目,介绍如何在Spring Boot中集成并使用Redis,同时解决可能出现的乱码问题。 首先,我们需要在Spring Boot项目中添加Redis的相关依赖。在`pom.xml`或`...
在本项目"SpringMVC整合RedisDemo"中,我们探讨了如何将流行的Java Web框架SpringMVC与高性能的键值存储系统Redis相结合,以提升Web应用的数据处理速度和效率。这个项目采用Maven作为构建工具,确保依赖管理的便捷性...
在这个名为"redisdemo.zip"的压缩包中,我们很可能是找到了一个关于Redis的初级示例,帮助初学者理解如何在Java环境中集成和使用Redis。这个简单的学习资源可能会涵盖以下几个关键知识点: 1. **Redis基础概念**:...
根据网上教程,自己整理学习的一份demo,记录一下,以便以后翻阅
在本项目"redisDemo"中,我们将探讨如何在SpringBoot框架下集成Jedis库来操作Redis,并封装基本的数据操作,涉及Redis的五种基础数据类型。 首先,`springboot`是一个由Pivotal团队维护的Java框架,用于简化Spring...
**RedisDemo案例** Redis,全称Remote Dictionary Server,是一个开源的、高性能的键值存储系统。它被广泛用于数据缓存、消息队列、计数器以及多种分布式系统中的数据存储。Redis以其丰富的数据结构(如字符串、...
在本“简单的redisdemo”中,我们将探索如何搭建和使用Redis。 **安装Redis** 1. 下载Redis源码:首先,你需要从官方网站(https://redis.io/download)下载Redis的最新稳定版本。 2. 编译安装:解压下载的源码,...
在"redisDemo"项目中,你可能会找到以下关键组件: 1. 连接配置:在C#代码中,你需要创建一个ConnectionMultiplexer实例来连接到Redis服务器。这通常涉及到提供服务器地址、端口号以及(如果有的话)密码。 ```...
本示例"RedisDemo_redis_"将带你入门如何在C#中使用Redis进行数据的存储和读取。 首先,我们需要安装`StackExchange.Redis` NuGet包,它是C#中广泛使用的Redis客户端库。通过Visual Studio的包管理器或命令行工具...
在这个"Shiro整合springMvc+Mybatis+Redis demo源码下载.zip"中,我们可以看到一个综合示例,演示了如何将Shiro与Spring MVC、Mybatis和Redis集成,以构建一个高效且安全的Web应用程序。 1. **Spring MVC整合Shiro*...
标题中的".Net Redis Demo"指的是一个使用.NET框架与Redis数据库交互的演示项目。Redis是一个开源的、基于键值对的数据存储系统,常用于缓存、消息队列和数据持久化等场景。在这个项目中,开发者可能通过.NET的库@...
在本文中,我们将深入探讨如何使用Spring Boot与Redis进行集成,并通过一个简单的示例来演示其配置和操作过程。Spring Boot是Spring框架的一个模块,它简化了创建独立、生产级别的基于Spring的应用程序。Redis则是一...
Redis 是一个高性能的键值数据存储系统,常用于缓存、消息队列等场景。本示例将详细介绍如何在Spring Boot项目中整合Redis,实现数据的高效存储与访问。 一、集成Redis 1. 添加依赖 在Spring Boot项目的`pom.xml`...
本资源包包含了关于Redis的学习笔记以及一个基于SpringBoot整合Redis的实战项目——"springboot-redisdemo",旨在帮助你深入理解和应用Redis。 首先,让我们详细探讨Redis的核心知识点: 1. **Redis的数据类型**:...