Redis--2.Jedis的介绍和使用
一.概念
Jedis是Redis官方推荐使用的的一个Java连接开发的工具(中间件)。
Jedis主要是集成了redis的一些命令操作,封装了redis的java客户端。
使用Jedis操作Redis数据库,就相当于使用JDBC操作sql_server、Mysql数据库。
二.两种连接方式
1.Jedis对象直连Redis
Jedis对象直连方式可以分为五个步骤:
1、导入Jedis的jar包
2、新建Jedis对象,其构造方法 new Jedis(String host,int port) ,port为端口号。
3、调用jedis.connect()方法连接Redis
4、调用jedis内置方法操作数据并获得结果
5、调用jedis.disconnect()方法关闭连接
所需依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> // 新建jedis对象 Jedis jedis = new Jedis("127.0.0.1", 6379); // 连接redis jedis.connect(); // 通过jedis对象调用内置方法,操作数据库,*代表获取所有 Set<String> set = jedis.keys("*"); // 通过循环将结果打印出来,可以在cmd窗口输入相对于的命令查看效果 for (String key : set) { System.out.println(key); } // 关闭连接 jedis.disconnect();
2.JedisPool连接池管理连接
开始Jedis对象先放在池子中每一次需要连接Redis的时候,只需要在池子中借,用完了再归还给池子,生产环境一般使用连接池的方式对Redis连接进行管理。
1、导入一个Jedis的jar包(以前使用jedis连接池方式操作redis,同时需要使用了Apache的通用对象池工具commons-pool作为资源的管理工具,要先下载commons-pool jar,但是jedis2.9.0.jar自带了连接池资源的管理工具JedisPoolConfig类所以可以直接使用自带的JedisPoolConfig,只需要导入一个Jedis的jar包)。
2、获得连接池配置对象JedisPoolConfig
3、设置连接池信息(最大连接数、最大空闲连接数等)
4、获得连接池
5、获得核心对象Jedis
6、用Jedis操作Redis数据并取得结果
7、关闭Jedis连接,关闭JedisPool连接池,释放资源
所需依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> // 获取连接池配置对象 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 设置连接池的最大信息:最大连接数 jedisPoolConfig.setMaxTotal(30); // 设置连接池的最大信息:最大空闲连接数 jedisPoolConfig.setMaxIdle(10); // 新建jedis连接池对象,获取配置的信息 JedisPool jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379); // 获得jedis对象 Jedis jedis = null; // 通过连接池获取资源进行连接 jedis = jedisPool.getResource(); // 通过jedis对象调用内置方法,操作数据库,*代表获取所有 Set<String> keys = jedis.keys("*"); for (String keylist : keys) { System.out.println(keylist); } // 关闭连接 jedis.close(); // 关闭连接池 jedisPool.close(); }
三.两种连接方式的优劣对比
客户端连接Redis使用的是TCP协议。
1.直连的方式每次需要建立TCP连接,而连接池的方式是可以预先初始化好Jedis连接,所以每次只需要从Jedis连接池借用即可,而借用和归还操作是在本地进行的,只有少量的并发同步开销,远远小于新建TCP连接的开销。
2.直连的方式无法限制Jedis对象的个数,在极端情况下可能会造成连接泄露,而连接池的形式可以有效的保护和控制资源的使用。
四.Jedis对应不同数据类型的内置方法
基本内置方法:
//验证redis密码,如果没有设置密码这段可以省略
jedis.auth(String password);
//连接
jedis.connect();
//关闭连接
jedis.disconnect();
//列出符合特定条件的key 其中pattern为匹配条件,填*则为列出所有
Set keys = jedis.keys(String pattern);
//移出给定的一个或多个key,如果key不存在,则忽略该命令
jedis.del(String keyname1,String keyname2…….);//检查给定key是否存在 ,返回一个boolean
jedis.exists(String keyname);
//将key1改名为key2,当key1和key2相同或者key1不存在时,返回一个错误
jedis.rename(String key1 , String key2);
//返回给定key所储存的值的类型。 none(key不存在),string(字符串),list(列表),set(集合),zset(有序集),hash(哈希表)
jedis.type(String keyname);
//移出给定key的生存时间(设置这个key永不过期)
jedis.persist(String keyname);
//设置key生存时间,当key过期时,它会被自动删除。 Time为秒数
jedis.expire(String keyname , int time);
操作String数据类型方法:
//字符串值value关联到key,如果key不存在则会新增一个key
jedis.set(String keyname, String value); //将值value关联到key,并将key的生存时间设为seconds(秒)。
jedis.setex(String keyname,String value ,int secondes);
//清空整个redis实例所有的key
jedis.flushAll();
//清空redis当前数据库所有的key
jedis.flushDB();
//返回key的个数
jedis.dbSize();
操作Hash表数据类型方法:
//设置一张hash表的两种方式:
//1、分别给哈希表key中的域设置值,分别对key中的字段1、字段2设置值
jedis.hset(String keyname , String fieldname1 , String value1);
jedis.hset(String keyname , String fieldname2 , String value2);
//2、用一个JAVA中的HashMap直接存储为redis中的哈希表
Map map = new HashMap();
map.put(String fieldname1 , String value1);
map.put(String filedname2 , String value2);
jedis.hmset(String keyname , Map map);
//返回哈希表key中给定字段field的值,返回对应值的类型
jedis.hget(String keyname , String fieldname);//返回哈希表key中给定多个字段的值,返回一个List
jedis.hget(String keyname , String fieldname1,String fieldname2….);
//返回哈希表key中的所有字段和值,返回一个Map<String,String>
jedis.hgetAll(String keyname);
//删除哈希表key中的一个或多个指定字段
jedis.hdel(String keyname , String fieldname1 , String fieldname2……);
//查看哈希表key中,给定字段field是否存在。
jedis.hexists(String keyname , String fieldname);
//返回哈希表key中的所有字段
jedis.hkeys(String keyname);
//返回哈希表key中的所有值
jedis.hvals(String keyname);
操作list列表数据类型方法:
//将值value插入到列表key的表头。
jedis.lpush(String keyname , String value);//返回列表key中指定区间内的元素,区间以偏移量start和stop指定. 下标(index)参数start和stop从0开始; 负数下标代表从后开始(-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推) 返回一个List
jedis.lrange(String keyname , int start , int stop);
//返回列表key的长度 , 返回一个Int
jedis.llen(String keyname);
操作set集合数据类型方法:
//将member元素加入到集合key当中。
jedis.sadd(String keyname , String value);
//移除集合中的member元素。
jedis.srem(String keyname , String value);
//返回集合key中的所有成员。返回一个set
jedis.smembers(String keyname);
//判断元素是否是集合key的成员
jedis.sismember(String keyname , String value);
//返回集合key的元素的数量
jedis.scard(String keyname);//返回一个集合的全部成员,该集合是所有给定集合的交集
jedis.sinter(String key1 , String key2);//返回一个集合的全部成员,该集合是所有给定集合的并集
jedis.union(String key1 , String key2);
//返回一个集合的全部成员,该集合是所有给定集合的差集
jedis.sdiff(String key1 , String key2);
- redis中的数据快照、AOF、数据恢复、主从复制介绍及使用
- NoSQL数据库Redis(REmote DIctionary Server)使用介绍和特性
- Redis的数据结构和使用场景介绍
- redis在php中的使用介绍
- Redis常用数据类型介绍、使用场景及其操作命令
- 【python】Redis介绍及简单使用
- Redis的Zset集合命令介绍及使用
- Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)
- Redis介绍,安装,客户端最基础使用小结
- Redis常用数据类型介绍、使用场景及其操作命令
- Redis 中 5 种数据结构的使用场景介绍
- Redis 专栏(使用介绍、源码分析、常见问题...)
- Linux(CentOS)中Redis介绍、安装、使用【一篇就够】
- Go语言技术教程:Redis介绍安装和使用
- 简单介绍在C# 项目中使用 redis
- redis-dump-load数据导出导入备份工具使用介绍
- Redis使用介绍
- Redis中5种数据结构的使用场景介绍
- Redis中5种数据结构的使用场景介绍
- Redis中5种数据结构的使用场景介绍