POM文件:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.5.2.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>
代码片段演示基于junit进行 。
场景一:单机Redis部署,使用Jedis
配置片段:
<bean id="jedis" class="redis.clients.jedis.Jedis"> <constructor-arg name="host" value="192.168.0.200" /> <constructor-arg name="port" value="6379" /> </bean>
代码片段:
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("classpath:spring/scm-cache-redis-config1.xml"); Jedis jedis = (Jedis) context.getBean("jedis"); /** * 设置连接密码 */ //jedis.auth("123456"); jedis.set("jedis", "jedis test"); assertEquals("jedis test", jedis.get("jedis"));
场景二:集群Redis部署(主从+读写分离),使用Jedis连接池(JedisPool)
配置片段:
<!--Jedis连接池的相关配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!--新版是maxTotal,旧版是maxActive --> <property name="maxTotal"> <value>1000</value> </property> <property name="maxIdle"> <value>50</value> </property> <property name="testOnBorrow" value="true" /> <property name="testOnReturn" value="true" /> </bean> <!-- Jedis连接池 --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg name="poolConfig" ref="jedisPoolConfig" /> <constructor-arg name="host" value="192.168.0.200" /> <constructor-arg name="port" value="6379" type="int" /> <constructor-arg name="timeout" value="5000" type="int" /> <!--密码和数据库索引配置 <constructor-arg name="password" value="123456" /> <constructor-arg name="database" value="0" type="int" /> --> </bean>
代码片段:
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("classpath:spring/scm-cache-redis-config1.xml"); JedisPool jedisPool=(JedisPool) context.getBean("jedisPool"); Jedis jedis=jedisPool.getResource(); jedis.set("jedis pool", "jedis pool test"); assertEquals("jedis pool test", jedis.get("jedis pool"));
场景三:集群Redis部署(主从+读写分离)+哨兵集群
说明:使用spring提供的客户端模板(RedisTemplate)进行数据操作,依赖spring的spring-data-redis-1.5.2.RELEASE.jar
配置片段:
<!-- Jedis连接池的相关配置 --> <bean id="jedisPoolConfig2" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="1024" /> <property name="maxIdle" value="200" /> <property name="numTestsPerEvictionRun" value="1024" /> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <property name="minEvictableIdleTimeMillis" value="30000" /> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <property name="maxWaitMillis" value="1000" /> <property name="testOnBorrow" value="true" /> </bean> <!-- 哨兵配置 --> <bean id="sentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration"> <property name="master"> <bean class="org.springframework.data.redis.connection.RedisNode"> <!--这个值要和Sentinel中指定的master的值一致,不然启动时找不到Sentinel会报错的 --> <property name="name" value="m1"></property> </bean> </property> <!--记住了,这里是指定Sentinel的IP和端口,不是Master和Slave的 --> <property name="sentinels"> <set> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="192.168.0.200"></constructor-arg> <constructor-arg name="port" value="26379"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="192.168.0.201"></constructor-arg> <constructor-arg name="port" value="26379"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="192.168.0.202"></constructor-arg> <constructor-arg name="port" value="26379"></constructor-arg> </bean> </set> </property> </bean> <!-- 连接工厂 --> <bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <constructor-arg name="sentinelConfig" ref="sentinelConfiguration"></constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig2"></constructor-arg> </bean> <!-- redis模板工具类 --> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="redisConnectionFactory"></property> <!-- 解决使用RedisTemplate乱码问题 --> <property name="keySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="valueSerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="hashKeySerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> <property name="hashValueSerializer"> <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /> </property> </bean>
代码片段:
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("classpath:spring/scm-cache-redis-config1.xml"); RedisTemplate redisTemplate=(RedisTemplate) context.getBean("redisTemplate"); redisTemplate.opsForValue().set("xa", "西安"); assertEquals("西安",redisTemplate.opsForValue().get("xa"));
场景四:集群Redis部署(主从+读写分离)+哨兵集群
说明:使用Jedis自带的哨兵池(JedisSentinelPool)进行Jedis资源的管理(类似于JedisPool)
配置片段:
<!-- Jedis连接池的相关配置 --> <bean id="jedisPoolConfig3" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="1024" /> <property name="maxIdle" value="200" /> <property name="numTestsPerEvictionRun" value="1024" /> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <property name="minEvictableIdleTimeMillis" value="30000" /> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <property name="maxWaitMillis" value="1000" /> <property name="testOnBorrow" value="true" /> </bean> <!-- JedisSentinelPool池配置 --> <bean id="jedisSentinelPool" class="redis.clients.jedis.JedisSentinelPool"> <!--这个值要和Sentinel中指定的master的值一致,不然启动时找不到Sentinel会报错的 --> <constructor-arg index="0" value="m1" /> <constructor-arg index="1"> <set> <value>192.168.0.200:26379</value> <value>192.168.0.201:26379</value> <value>192.168.0.202:26379</value> </set> </constructor-arg> <constructor-arg index="2" ref="jedisPoolConfig3" /> </bean>
代码片段:
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("classpath:spring/scm-cache-redis-config1.xml"); JedisSentinelPool jedisSentinelPool=(JedisSentinelPool) context.getBean("jedisSentinelPool"); Jedis jedis = null; try { jedis = jedisSentinelPool.getResource(); jedis.set("bj", "北京"); assertEquals("北京", jedis.get("bj")); } catch (Exception e) { e.printStackTrace(); } finally { jedisSentinelPool.returnBrokenResource(jedis); } jedisSentinelPool.close();
场景五:分片(多Master,独立)+一致性HASH
配置片段:
<!-- Jedis连接池的相关配置 --> <bean id="jedisPoolConfig4" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="1024" /> <property name="maxIdle" value="200" /> <property name="numTestsPerEvictionRun" value="1024" /> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <property name="minEvictableIdleTimeMillis" value="30000" /> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <property name="maxWaitMillis" value="1000" /> <property name="testOnBorrow" value="true" /> </bean> <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"> <constructor-arg index="0" ref="jedisPoolConfig4" /> <constructor-arg index="1"> <list> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg name="host" value="192.168.0.200" /> <constructor-arg name="name" value="master:200" /> <constructor-arg name="port" value="6379" /> <constructor-arg name="timeout" value="5000" /> <constructor-arg name="weight" value="1" /> <!-- <property name="password" value="123456" /> --> </bean> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg name="host" value="192.168.0.201" /> <constructor-arg name="name" value="master:201" /> <constructor-arg name="port" value="6379" /> <constructor-arg name="timeout" value="5000" /> <constructor-arg name="weight" value="1" /> <!-- <property name="password" value="123456" /> --> </bean> <bean class="redis.clients.jedis.JedisShardInfo"> <constructor-arg name="host" value="192.168.0.202" /> <constructor-arg name="name" value="master:202" /> <constructor-arg name="port" value="6379" /> <constructor-arg name="timeout" value="5000" /> <constructor-arg name="weight" value="1" /> <!-- <property name="password" value="123456" /> --> </bean> </list> </constructor-arg> </bean>
代码片段:
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("classpath:spring/scm-cache-redis-config1.xml"); ShardedJedisPool shardedJedisPool=(ShardedJedisPool) context.getBean("shardedJedisPool"); ShardedJedis shardedJedis = shardedJedisPool.getResource();; try { shardedJedis.set("cw", "宠物"); assertEquals("宠物", shardedJedis.get("cw")); } catch (Exception e) { e.printStackTrace(); } finally { if(shardedJedis!=null) { shardedJedis.close(); } }
场景六:redis+cluster
配置片段:
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg index="0"> <!-- 集群中的任意节点,个数不限 --> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.0.200"/> <constructor-arg name="port" value="7000"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.0.200"/> <constructor-arg name="port" value="7001"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.0.201"/> <constructor-arg name="port" value="7000"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.0.201"/> <constructor-arg name="port" value="7001"/> </bean> </set> </constructor-arg> </bean>
代码片段:
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("classpath:spring/scm-cache-redis-config1.xml"); JedisCluster jedisCluster=(JedisCluster) context.getBean("jedisCluster"); try { jedisCluster.set("mary", "麦瑞"); assertEquals("麦瑞", jedisCluster.get("mary")); } catch (Exception e) { e.printStackTrace(); } finally { if(jedisCluster!=null) { try { jedisCluster.close(); } catch (IOException e) { e.printStackTrace(); } } }
相关推荐
在Windows环境中使用Redis客户端时,用户需要注意以下几点: - **安装和配置**:确保已正确安装Redis服务,并配置了客户端连接的参数,如主机名、端口号、密码等。 - **性能监控**:客户端应提供性能指标,如内存...
使用Redis客户端时,需要注意以下几点: - **安全性**:确保在连接远程Redis服务器时使用安全的网络环境,避免敏感数据泄露。 - **性能优化**:理解Redis的数据结构特性,合理使用不同类型的键以提高访问速度和存储...
总的来说,"redis客户端绿色免安装本地版"为用户提供了一种快速、简便的方式来管理和调试Redis数据库,尤其适合开发人员和系统管理员在本地环境中进行测试和调试。通过`RedisStudio.exe`这样的工具,用户可以更高效...
在本压缩包中,包含了几种与Redis相关的资源,包括客户端工具和Java客户端库。 1. **Redis桌面管理器** (redis-desktop-manager-0.8.8.384.exe): 这是一款图形化用户界面的Redis客户端,允许用户直观地管理和操作...
`RedisClientTemplate`可能包含的方法包括但不限于以下几种: 1. **基本的键值操作**:如`set(key, value)`用于设置键值对,`get(key)`用于获取键对应的值,`delete(key)`用于删除键,以及`exists(key)`用于检查键...
Redis客户端的基本操作包括但不限于以下几点: 1. **连接与断开**:客户端需要连接到Redis服务器,通过指定服务器的IP地址和端口号实现。完成任务后,客户端会断开与服务器的连接,释放资源。 2. **命令执行**:...
标题 "Node.js-deno的redis客户端的一个实验性实现" 指的是在 Deno 这个 JavaScript/TypeScript 运行环境中对 Redis 客户端的一种初步尝试。Deno 是由 Ryan Dahl,也是 Node.js 的创始人,推出的一个新的 JavaScript...
Redis客户端可以是各种编程语言的库,如Python的redis-py、Java的Jedis、Node.js的ioredis等。这些客户端库提供了一套完整的API,方便开发者在应用中与Redis服务器进行交互。客户端负责将应用程序的请求转换为Redis...
在这个“Redis客户端与服务端安装包”中,我们包含了两个关键组件: 1. **Redis服务端-x64-3.2.10**:这是Redis服务器的64位版本,版本号为3.2.10。Redis的版本迭代较快,每个新版本通常会引入新的特性和性能优化。...
在选择Scala Redis客户端时,有几个关键知识点是开发者需要了解的: 1. **连接管理**:客户端需要提供连接池支持,以复用TCP连接,减少建立和关闭连接的开销。同时,客户端应该能够处理连接故障,如自动重连。 2. ...
2. 开发语言客户端:几乎所有的主流编程语言(如Python、Java、Node.js、Go等)都有对应的Redis客户端库,如Python的`redis-py`,Java的`Jedis`,Node.js的`ioredis`等。这些库提供了丰富的API,方便开发者在应用...
在使用RedisDesktopManager时,需要注意以下几点: - **安全考虑**:由于可视化客户端直接暴露了数据库操作,因此在公共网络环境下使用时需谨慎,避免敏感数据泄露。 - **版本兼容性**:确保使用的RedisDesktop...
在Mac上,常见的Redis客户端有以下几种: 1. **Redis Desktop Manager (RDM)**:这是一个跨平台的Redis管理工具,包括macOS版本。文件名"rdm.app"可能就是这个应用的打包文件,它提供了用户友好的界面,支持多窗口...
本文主要给大家介绍了关于redis实现加锁的几种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET 2. 第一种锁命令INCR 这种...
该模块实现了Redis客户端协议的封装,这意味着开发者可以通过易语言调用该模块,直接与Redis服务器进行交互,执行如GET、SET、INCR、PUSH、POP等基本操作,以及更复杂的命令如LUA脚本执行、事务处理等。这极大地简化...
在 Octave 和 Matlab 中使用 `go-redis` 需要了解以下几个核心概念: 1. **键值对操作**:Redis 基于键值对存储,`go-redis` 提供了设置(set)、获取(get)、删除(delete)等基本操作。例如,可以将一个字符串或...
同样在命令行中,输入`redis-cli.exe`即可打开Redis客户端。如果设置了密码,需要在连接时提供:`redis-cli.exe -h localhost -p 6379 -a yourpassword`。 #### 5. 监控与管理 Redis提供了命令行工具进行数据操作和...
安装和使用此版本的RDM,用户无需具备深厚的Redis知识,只需简单几步即可连接到本地或远程的Redis服务器。 在使用Redis Desktop Manager时,用户可以执行以下操作: 1. **连接管理**:创建、编辑和删除Redis服务器...
虽然没有具体的信息关于这个工具包的内容,但我们可以推测它可能包括以下几种类型的资源: 1. **Redis客户端库**:用于不同编程语言(如Java、Python、C#等)连接Redis服务器的客户端库。 2. **Redis命令行工具**:...
ServiceStack.Redis 3.9是针对C#开发者的一个重要的Redis客户端库,它是ServiceStack.Redis系列中的一个重要里程碑,尤其因为这是其作为免费版本的最后一个发行版。Redis是一个高性能、开源、内存中的数据结构存储...