java客户端
jedis:学习成本低,但是线程不安全
lettuce:支持同步、异步、响应式编程,线程安全,支持redis哨兵模式,集群模式和管道模式
redisson:基于redis实现高级功能
jedis
java
public class jedisPoolFactory {
private static JedisPool jedisPool;
static {
//配置连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(8);
jedisPoolConfig.setMinIdle(0);
jedisPoolConfig.setMaxTotal(8);
jedisPoolConfig.setMaxWaitMillis(1000);
//创建连接池对象
jedisPool =new JedisPool(jedisPoolConfig,"192.168.160.154",6379,1000,"123321");
}
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
java
class RedisJavaCliApplicationTests {
private Jedis jedis;
@BeforeEach
public void before(){
jedis=jedisPoolFactory.getJedis();
}
@Test
public void Test(){
String result=jedis.set("djw","sb");
System.out.println(result);
System.out.println(jedis.get("djw"));
}
@AfterEach
public void after(){
if(jedis!=null)
jedis.close();
}
}
spring data redis
提供了RedisTemplate工具类,其中封装了各种对redis的操作。并且将不同数据类型的操作API封装到不同的类型中:
| API | 返回值类型 | value类型 |
|---|---|---|
| redisTemplate.opsForValue() | ValueOperations | String |
| redisTemplate.opsForHash() | HashOperations | Hash |
| redisTemplate.opsForList() | ListOperations | List |
| redisTemplate.opsForSet() | SetOperations | Set |
| redisTemplate.opsForZSet() | ZSetOperations | SortedSet |
| redisTemplate | 通用命令 |
传入的value值是Object类型,会自动进行序列化和反序列化
StringRedisTemplate
为了节省内存空间,当存储java对象时,手动完成完成对象的序列化和反序列化