reids spring集成
redis命令jedisClient redis 使用 1,getRedisTemplate(key).opsForList().leftPush(key, queue) .rightPop(key) 左进右出 lpush rpop 2,getRedisTemplate(key).opsForZSet().add(key, String.valueOf(id), currentTimeMillis); zadd(key,value,double)double相同就排序,不同(传入当前毫秒值)就按次序放入 zrange(key, 0, -1) 获取全部元素 zRem(key, String.valueOf(id)) 删除某个元素 3,getRedisTemplate(key).opsForValue().set(key, val, timeout, unit); 设置值带超时时间 setex 4,getRedisTemplate(key).opsForValue().increment(key, 0)每次调用不累加 (key, 1)每次调用累加1 incrBy
1,Redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略
get 获取元素下标
2,Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。
private static Jedis jedis;
static{
jedis = new Jedis("192.168.89.133", 6379);
//权限认证
jedis.auth("123");
System.out.println("连接服务成功");
}
@Test
public void jedisTest(){
// jedis.set("name", "chx11"); //key为name放入value值为chx
// System.out.println("拼接前:" + jedis.get("name"));//读取key为name的值
// //向key为name的值后面加上数据 ---拼接
// jedis.append("name", " is my name;");
// System.out.println("拼接后:" + jedis.get("name"));
System.out.println(jedis.incrBy("myIncr", 0));
System.out.println(jedis.incrBy("myIncr", 2));
System.out.println(jedis.incrBy("myIncr", 0));
System.out.println(jedis.incrBy("myIncr", 2));
// jedis.lpush("mypush", "push1");
// jedis.lpush("mypush", "push2");
// jedis.lpush("mypush", "push3");
// System.out.println(jedis.rpop("mypush"));
// jedis.zadd("myzadd", 1, "zadd1");
// jedis.zadd("myzadd", 1, "zadd2");
// jedis.zadd("myzadd", 1, "zadd3");
// Set<String> set = jedis.zrange("myzadd", 0, -1);
// System.out.println(set);
// Long l = jedis.setnx("mynx", "mynx1");
// System.out.println(l);
// jedis.del("mynx");
// Long l2 = jedis.setnx("mynx", "mynx1");
// System.out.println(l2);
}
主从集群+哨兵 JedisSentinelPool 单机 JedisPool
sentinel monitor resque 192.168.89.133 6379 2 // resque 主服务名称,在sentinel中配置
发生主从切换后,主从机器的配置文件会改动,重启后延续该主从
https://blog.csdn.net/u014378181/article/details/79086815
以下配置时sentinel启动后自动追加的
maxclients 4064
sentinel leader-epoch resque 2
sentinel known-slave resque 192.168.89.131 6380
sentinel known-slave resque 192.168.89.131 6381
sentinel known-sentinel resque 192.168.89.131 26380 1bcbb92f57f83870fcfd1d8b461c34c987584fd8
sentinel known-sentinel resque 192.168.89.131 26381 f8c4815617dd8eacb236b146a3f3e4b9c50938a3
sentinel current-epoch 3
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.6.4.RELEASE</version> </dependency>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!--最大连接数 -->
<property name="maxTotal" value="30"/>
<!--最大空闲连接数 -->
<property name="maxIdle" value="10"/>
<!--每次释放连接的最大数目 -->
<property name="numTestsPerEvictionRun" value="1024"/>
<!--释放连接的扫描间隔(单位:毫秒) -->
<property name="timeBetweenEvictionRunsMillis" value="30000"/>
<!--连接最小空闲时间(单位:毫秒) -->
<property name="minEvictableIdleTimeMillis" value="100000"/>
<!--连接空闲多久后释放,当空闲时间大于该值并且空闲连接大于最大空闲连接时直接释放连接 -->
<property name="softMinEvictableIdleTimeMillis" value="10000"/>
<!--获取连接时最大等待毫秒数,如果该值小于0,则阻塞不确定的时长,默认值-1 -->
<property name="maxWaitMillis" value="1500"/>
<!--在获取连接时检查连接有效性,默认为false -->
<property name="testOnBorrow" value="false"/>
<!--在连接空闲时检查连接有效性,默认为false -->
<property name="testWhileIdle" value="true"/>
<!--连接耗尽是否阻塞,false代表抛异常,true代表阻塞直到超时,默认为true -->
<property name="blockWhenExhausted" value="false"/>
</bean>
<bean id="jedisSentinelPool" class="redis.clients.jedis.JedisSentinelPool">
<constructor-arg name="masterName" value="resque"></constructor-arg>
<constructor-arg name="sentinels">
<set>
<value>192.168.89.133:26379</value>
<value>192.168.89.133:26380</value>
<value>192.168.89.133:26381</value>
</set>
</constructor-arg>
<constructor-arg ref="jedisPoolConfig"></constructor-arg>
<constructor-arg name="password" value="123"></constructor-arg>
</bean>
@Repository("redisDataSource")
public class RedisDataSource {
@Autowired
private JedisSentinelPool jedisSentinelPool;
public Jedis getRedisClient() {
try {
Jedis shardJedis = jedisSentinelPool.getResource();
return shardJedis;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
@Autowired
private RedisDataSource redis;
@RequestMapping("/index2")
public String myIndex(HttpServletRequest request, HttpServletResponse response) throws ServletException{
Jedis jedis = redis.getRedisClient();
jedis.set("my", "mywww1");
String s = jedis.get("my");
System.out.println("获取: "+s);
return null;
}
6379主服务下线,6380被选为主服务
public void test() {
Set<String> sen = new HashSet<String>();
sen.add("192.168.89.133:26379");
sen.add("192.168.89.133:26380");
sen.add("192.168.89.133:26381");
JedisPoolConfig config = new JedisPoolConfig();
// // 设置最大连接数
config.setMaxTotal(10);
// // 设置最大阻塞时间,记住是毫秒数milliseconds
config.setMaxWaitMillis(10*1000);
// // 设置空间连接
config.setMaxIdle(0);
//在获取连接的时候检查有效性, 默认false
config.setTestOnBorrow(false);
JedisSentinelPool jsp = new JedisSentinelPool("resque",
sen, config,
33*1000, "123", 0);
Jedis je = null;
try{
je = jsp.getResource();
je.set("my", "mywww");
String s = je.get("my");
System.out.println("获取: "+s);
System.out.println(je.get("xmh"));
}catch(Exception e){
e.printStackTrace();
}
//jsp.close();
System.out.println("OK");
}
//@Test
public void getJedisPool() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(1024); // 可用连接实例的最大数目,如果赋值为-1,表示不限制.
config.setMaxIdle(5); // 控制一个Pool最多有多少个状态为idle(空闲的)jedis实例,默认值也是8
config.setMaxWaitMillis(1000 * 100); // 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时/如果超过等待时间,则直接抛出异常
config.setTestOnBorrow(true); // 在borrow一个jedis实例时,是否提前进行validate操作,如果为true,则得到的jedis实例均是可用的
JedisPool jedisPool = new JedisPool(config, "192.168.89.133", 6379,33*1000,"123");
jedis = jedisPool.getResource();
String s= jedis.get("xmh");
System.out.println("jedispool获取: "+s);
}
spring servlet
<dependency>
<groupId>org.apache.geronimo.bundles</groupId>
<artifactId>commons-digester</artifactId>
<version>1.8_1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>1.2-20</version>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>1.2-20</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springversion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springversion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springversion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springversion}</version>
</dependency>

浙公网安备 33010602011771号