首先需要导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.0</version>
</dependency>
单线程连接
private def jedisTest(): Unit = {
val jedis = new Jedis("mypc01", 6379)
val str: String = jedis.set("user4", "libai")
println(str) //ok
println(jedis.get("user2"))
println(jedis.get("user4"))
}
线程池连接
def jedisPoolTest(): Unit = {
//创建线程池
val pool = new JedisPool("mypc01", 6379)
//获取连接对象
val jedis: Jedis = pool.getResource
//设置一系列的键值对
val str: String = jedis.mset("hobby", "code", "movie", "lion")
println(str) //OK
//获取指定key的值,可以是多个key
val strings: util.List[String] = jedis.mget("hobby", "movie")
println(strings) //[code, lion]
pool.close()
}
如果对线程池的线程数有限制的话,比如空闲线程数之类的,也是可以设置的
def jedisPoolTest(): Unit = {
val config = new GenericObjectPoolConfig()
config.setMaxTotal(15)
//最大空闲连接数
config.setMaxIdle(10)
//最小空闲连接数
config.setMinIdle(5)
//创建线程池
val pool = new JedisPool(config, "mypc01", 6379)
//获取连接对象
val jedis1: Jedis = pool.getResource
//mest设置kv对
val str: String = jedis1.mset("hobby", "code", "movie", "lion")
println(str) //OK
//mget依据k获取v,返回值为List
val strings: util.List[String] = jedis1.mget("hobby", "movie")
println(strings) //[code, lion]
pool.close()
}
上述例子用到的方法解析
mset
public String mset(String... keysvalues)
将各个键设置为各个值。 MSET将用新值替换旧值,而MSETNX将根本不执行任何操作,即使仅存在一个键也是如此。
由于这种语义,可以使用MSETNX来设置代表唯一逻辑对象的不同字段的不同键,以确保所有字段都设置或根本不设置。
MSET和MSETNX都是原子操作。 这意味着,例如,如果key A和B被修改,则另一个与Redis通信的客户端可以一次看到对A和B的更改,或者根本看不到任何更改。
mget
public java.util.List<String> mget(String... keys)
获取所有指定键的值。 如果一个或多个键不存在或不是String类型,则返回“ nil”值而不是指定键的值,但是操作永远不会失败。
时间复杂度:每个键为O(1)
总结
创建连接一般用连接池,之后就可以进行一系列操作了.