Redis - 存储set
概述:
Redis中,Set类型可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要说明的是,这些操作的时间复杂度为O(1)。可包含的最大元素数量是4292967295。
Set集合中不允许出现重复的元素,如果多次添加相同元素,Set中将仅保留该元素的一份拷贝。Set类型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计算操作。由于这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络IO开销。
作用:如果在Redis操作中,涉及到两个大数据集合的并集,交集,差集运算时,可以用到Set集合。
set命令(常用)
添加/删除元素:
-
- sadd key values....
- srem key members....,从set中指定的成员
获得集合中的元素:
-
- smembers key:获取set中所有的成员
- sismember key member:判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在。(效率高)
差集/交集/并集运算:
-
- sdiif set1 set2
- sinter set1 set2
- sunion set1 set2
扩展:
-
- scard key:获取set中成员的数量
- srandemember key :随机获取set中的一个成员
Jedis连接池
package cn.itcast.demo; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class Demo1 { /** * 单实例链接redis数据库 */ @Test public void run() { Jedis jedis = new Jedis("192.168.6.129", 6379); // jedis.set("name", "张三"); System.out.println(jedis.get("name")); } /** * Jedis连接池 */ @Test public void run2() { //1. 设置连接池的配置对象 JedisPoolConfig config = new JedisPoolConfig(); // 设置池中最大连接数 config.setMaxTotal(50); // 设置空闲时池中保有的最大连接数 config.setMaxIdle(10); // 2.设置连接池对象 JedisPool pool = new JedisPool(config, "192.168.6.129", 6379); // 3.从池中获取链接对象 Jedis jedis = pool.getResource(); System.out.println(jedis.get("name")); // 4.链接归还池中 jedis.close(); } }