之前介绍了redis是什么,现在来介绍一下redis的使用
redis的使用,大部分情况下就这三种,尤其是第三种比较多
redis.clients
jedis
2.9.0
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.set("mykey1", "this is my key1"); // string
jedis.get("mykey1"); // 获取指定key
jedis.del("mykey1") // 删除指定key
jedis.hset("mykeyhash", "username", "root"); // hash
jedis.lpush("mykeyList", "a","b","c","d","e"); // list
jedis.sadd("mykeySet", "a","a","w"); // set
jedis.zadd("mykeyZSet", 60, "root"); // zset
jedis.close();
为了提高redis的连接效率,我们可以用连接池
JedisPoolConfig config = new JedisPoolConfig();
// 连接池的最大连接数
config.setMaxTotal(20);
// 最大空闲的连接数
config.setMaxIdle(5);
// 最小的空闲连接数
config.setMinIdle(3);
// 假设连接池没有连接,客户端需要等待的时间,单位是毫秒
config.setMaxWaitMillis(5000);
JedisPool pool = new JedisPool(config, "127.0.0.1", 6379);
Jedis jedis = pool.getResource();
然后正常使用就行,记得,使用完 close掉,会把连接归还给连接池
spring-data-redis也有连接池,并且会进行自动管理,提供了一个封装程度很高的RedisTemplate类,还把redis客户端的大量API封装成了接口,支持redis那五种数据类型的操作
在Redistemplate中,有两类方法经常使用,opsForXXX、boundXXXOps,这个XXX指的是我们value的类型,前者没有指定指定操作的key,可以在一个连接内,或者说一个事务内,操作多个key以及多个value,后者是制定了一个key,在一个连接内,或者说一个事务内,只能操作这个key以及这个key对应的value
redis.clients
jedis
3.0.1
org.springframework.data
spring-data-redis
2.3.4.RELEASE
@Autowired
private RedisTemplate redisTemplate;
redisTemplate.opsForValue().set("key", "value");
String value = redisTemplate.opsForValue().get("key");
注意,这儿类型声明的分别是key和value的属性,value如果是对象,这个对象必须进行序列化,因为在redis中存储对象,redis存储的还是字符串,它会把数据转换为数组的形式存储,所以在存取的时候,涉及到序列化与反序列化
org.springframework.boot
spring-boot-starter-data-redis
2.3.4.RELEASE
#配置springboot和redis整合,可以直接在程序中注入RedisTemplate对象操作redis数据库spring:
spring:
redis:
host: 127.0.0.1
port: 6379
database: 0
使用方式与上面一致,直接注入使用即可
@Autowired
private StringRedisTemplate stringRedisTemplate;