java客户端访问redis
Java客户端访问redis的方式:
- jedis
- springboot集成的StringRedisTemplate与RedisTemplate
(StringRedisTemplate继承了RedisTemplate,两者方法一模一样,不同之处是RedisTemplate使用的是JdkSerializationRedisSerializer 存入数据会将数据先序列化成字节数组然后在存入Redis数据库。而StringRedisTemplate使用的是StringRedisSerializer)
jedis
1、导入jedis的依赖包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2、jedis连接代码
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.HashMap;
import java.util.Map;
/**
* @auther redis连接测试
* @create xxxx/xx/xx
*/
public class JedisSingle {
public static void main(String[] args) {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(20); //最大连接数, 默认8个
jedisPoolConfig.setMaxIdle(10); //最大空闲连接数, 默认8个
jedisPoolConfig.setMinIdle(5); //最小空闲连接数, 默认0
/**
* jedisPoolConfig:poolConfig配置
* host : redis服务器ip
* port : redis端口号
* timeout : 连接超时时间(读、写)
* password : 访问密码(如果redis没有设置访问密码则传null)
*/
JedisPool jedisPool = new JedisPool(jedisPoolConfig,"117.78.8.247",6379,3000,null);
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
// 字符串
jedis.set("index","10");// set key value
jedis.get("index"); // get key
jedis.incr("index"); // incr key
jedis.incrBy("index",50); // incrby key increment
jedis.setnx("index","nxval");// set key value nx
jedis.del("index");// del key [key ...]
// 列表
jedis.lpush("mylist","a,b,c,d,e");// lpush
jedis.lrange("mylist",0,-1);// lrange key start stop
jedis.rpop("mylist");// rpop key
// hash
Map<String,String> map = new HashMap<>();
map.put("username","zhangsan");
map.put("age","25");
map.put("birthyear","1994");
jedis.hmset("user:1000",map); // hmset key field value [field value ...]
jedis.hmget("user:1000",new String[]{"username","age","birthyear"});
// ....其他操作一样
}catch (Exception e){
e.printStackTrace();
}finally {
if (null != jedis){
jedis.close();
}
}
}
}
springboot-StringRedisTemplate
1、引入相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2、springboot项目核心配置
server:
port: 8080
# datasource
spring:
# redis (RedisProperties)
redis:
host: 117.78.8.247 # Redis服务器地址
port: 6379 # Redis服务器连接端口
password: # Redis服务器连接密码(默认为空)
database: 0 # Redis数据库索引(默认为0)
lettuce:
pool:
max-active: 50 #连接池最大连接数(使用负值表示没有限制)
pool.max-wait: 3000 #连接池最大阻塞等待时间(使用负值表示没有限制)
pool.max-idle: 20 #连接池中的最大空闲连接
pool.min-idle: 2 #连接池中的最小空闲连接
3、访问代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* @auther springboot-redis
* @create xxxx/xx/xx
*/
@RestController
public class redisTest {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@RequestMapping("/redisConn")
public void redisConn(){
// 操作字符串 : stringRedisTemplate.opsForValue()
stringRedisTemplate.opsForValue().set("redis","hello"); // set key value
String redis = stringRedisTemplate.opsForValue().get("redis"); // get key
Long redis1 = stringRedisTemplate.opsForValue().size("redis"); // strlen key
String redis2 = stringRedisTemplate.opsForValue().get("redis", 0, 3); // getrange key start end
Integer append = stringRedisTemplate.opsForValue().append("redis", "appendVal");// append key value
stringRedisTemplate.opsForValue().setIfAbsent("redis","nxVal"); // setnx key value
// Hash : stringRedisTemplate.opsForHash()
Map<String,String> userMap = new HashMap<>();
userMap.put("name","zhangsan");
userMap.put("age","25");
userMap.put("birthyear","1994");
stringRedisTemplate.opsForHash().putAll("myhash",userMap); // hmset key field value [field value ...]
stringRedisTemplate.opsForHash().hasKey("myhash","name"); // hexists key field
stringRedisTemplate.opsForHash().entries("myhash"); // hgetall key 返回Map对象
stringRedisTemplate.opsForHash().values("myhash"); // hvals key 返回List对象
stringRedisTemplate.opsForHash().keys("myhash"); // hkeys key 返回List对象
stringRedisTemplate.opsForHash().multiGet("mylist", Arrays.asList(new String[]{"name", "age", "birthyear"})); // hmget key field1 field2 ...
stringRedisTemplate.opsForHash().putIfAbsent("mylist","class","1"); // hsetnx key field value
// List : stringRedisTemplate.opsForList()
...
// set : stringRedisTemplate.opsForSet()
...
// zset : stringRedisTemplate.opsForZSet()
...
}
}