在Java中使用Redis
程序员文章站
2022-05-26 15:17:15
准备工作 1、下载驱动包jedis.jar。 名字很好记,就是把redis的首字母r换成j。 2、在项目中添加jedis.jar Jedis类 在Java中操作Redis使用的是Jedis类。 1、构造函数 Jedis() //使用默认的host、port。host默认为localhost/127. ......
准备工作
1、下载驱动包jedis.jar。
名字很好记,就是把redis的首字母r换成j。
2、在项目中添加jedis.jar
jedis类
在java中操作redis使用的是jedis类。
1、构造函数
- jedis() //使用默认的host、port。host默认为localhost/127.0.0.1,port默认为6379。
- jedis(string host) //指定redis服务器地址,ip、域名均可。使用默认端口6379.
- jedis(string host, int port)
- jedis(string host, int port , int timeout) //超时时间
- jedis(string host,int port , boolean ssl) //是否使用安全连接
- jedis(string host,int port, int timeout, boolean ssl)
2、连接服务器
- auth(string password) //验证密码
- ping() //测试连接,连接成功返回string类型的pong。
- connect() //连接服务器。使用auth()时会自动自动调用connect()连接,可以不用connect()
- disconnect() //关闭连接
- close() //关闭连接并释放资源,会自动调用disconnect()
- quit() //关闭连接并退出,会自动调用close()
- shutdown() //关闭服务器
3、配置参数
- configset(string param, string value)
- configget(string param)
- configrewrite() //同步到配置文件中
4、操作数据库
- select(index db) //选择当前使用的数据库,默认为数据库0
- getdb() //返回当前使用的数据库,int型。
- dbsize() //当前数据库中key的数量,返回值是long型
- flushdb() //清空当前数据库
- flushall() //清空所有数据库
- save() //同步、持久化到数据库文件(.rdb)
- bgsave() //后台save()
- keys(string pattern) //获取当前数据库中,所有符合要求的key,返回值时set<string>类型。"*"表示匹配所有的key。
5、操作键值对
- set(string key,string value) //如果key已存在,会覆盖
- setnx(string key, string value) //key不存在时才设置,若key已存在,则不作操作(不会覆盖原来的值)
- setex(string key,int seconds, string value) //过期时间,多少秒后过期,如不设置则键值对一直存在。setex即set expire,设置生存期。
- mset(string key1,string value2,string key2, string value2, .....) //同时设置多个键值对。mset即multiple set。
- msetnx(string key1,string value2,string key2, string value2, .....) //key不存在时才设置
- get(string key) //返回string类型的value
- mget(string key1,string key2, .....) //同时获取多个value,返回值是list<string>
- exists(string key) //是否存在
- expire(string key, int seconds) //设置过期时间
- del(string key) //删除
- del(string key1, string key2, ....) //删除多个
- rename(string oldkey,string newkey) //重命名key
- type(string key) //获取value的类型,string、hash、list、set、sorted set。
- incr(string key) //key是内容为int的string,将value+1。返回操作后的数值,long型。
- incrby(string key, long increment) //增加指定值(long),返回long。
- incrbyfloat(string key,double increment) //double型
- decr(string key) //-1
- decrby(string key,long decrement) //-decrement
没有decrbyfloat()方法。
key、value对支持2种数据类型:
- string、string,键和值都用string
- byte[]、byte[],键和值都用byte[],二进制数据。
上面的方法都是操作string、string类型的键值对,byte[]、byte[]类型的键值对也有同样的方法。
6、操作hash
操作hash的方法都带有前缀h。
- hset(string key,string field, string value) //设置一个字段
- hsetnx(string key, string field, string value)
- hset(string key,map<string ,string> hash)
- hget(string key , string field)
- hmget(string key, string field1, string field2, ....) //获取多个字段的值,返回值是list<string>类型
- hgetall(string key) //获取所有的字段,返回值是map<string , string >类型
- hexists(string key, string field) //该字段是否存在
- hdel(string key, string field) //删除该字段
- hkeys(string key) //获取所有的字段名,返回值是set<string>
- hvals(string key) //获取所有的字段值,返回值是list<string>
- hlen(string key) //返回该hash表中字段数,返回值是long型
- hincrby(string key, string field, long increment) //返回操作后的数值,long型
- hincrbyfloat(string key, string field , double increment) //double
没有hdecrxxx()方法。
7、操作list
- lpush(string key, string value1, string value2, .....) //在列表头部推入一个或多个元v素。l表示left,左边,即列表的头部。
- lpushx(string key, string value1, string value2 ,.....)
- lpop(string key) //弹出并返回列表的第一个元素,会从列表中移除该元素
- rpush(string key, string value1, string value2, ....) //在列表尾部推入一个或多个元素
- rpushx(string key, string value1, string value2, ....)
- rpop(string key) //弹出并返回列表的最后一个元素
- lindex(string key, long index) //返回该位置上的元素,string类型。
- linsert(string key,listposition position, string value1, string value2) //在value1的前面/后面插入value2。第二个参数是常量,可用的值:listposition.before,listposition.after。
- llen(string key) //元素个数,long
- lrange(string key, long startindex, long endindex) //返回[startindex, endindex]上的所有元素,list<string>
- lset(string key, long index, string value) //修改该位置上的元素值。index位置上要已有元素。
- lrem(string key, long count, string value) //从列表中移除count个值是value的元素
- ltrim(string key, long startindex, long endindex) //修剪列表,只保留[startindex, endindex]上的元素,其余删除。返回string类型的操作结果,“ok”表示操作成功。
8、操作set
- sadd(string key, string value1, string value2, ....) //添加一个或多个元素
- srem(string key, string value1, string value2, ...) //移除一个或多个元素
- scard(string key) //返回集合中的元素个数,long
- smembers(string key) //返回集合中所有的元素,set<string>
- sismember(string key, string element) //集合中是否有该元素,boolean
- spop(string key) //随机弹出一个元素,string。pop操作均会移除该元素。
- spop(string key, long count) //随机弹出count个元素,set<string>。因为set是无序的,所以是随机弹出。
- srandmember(string key) //随机返回一个元素。与spop()的区别是,srandmember()不会移除该元素。
- srandmember(sring key, long count)
- sdiff(string key1, string key2, ....) //求差集,返回set<string>
- sdiffstore(string destkey, string key1, string key2) //求差集,但把差集中的元素放到destkey集合中。返回差集中的元素个数,long。
相同用法的还有:
- sinter 交集
- sunion 并集
set是无序的,所以没有与索引相关的方法。
9、操作sorted set
- zadd(string key, doubel score, string element)
- zadd(string key, map<string, double> map)
- zrem(string key, string element1, string element2, ....) //移除一个或多个元素
- zcard(string key) //元素个数,long
- zcount(string key, double minscore, double maxscore) //返回[minscore, maxscore]区间上的元素个数
- zcount(string key, string startelement, string endelement) //返回[startelement, endelement]上的元素个数。元素根据score排序,是有顺序的。
- zrank(string key, string element) //返回值是value的元素个数。有序,元素可重复。
- zincrby(string key, double increment, string element) //返回操作后的值,double
- zinter(string destkey, string...keys) //交集
- zunion(string destkey,string...keys) //并集
- zrangebyxxx() 系列方法 //返回该某个区间上的所有元素,set<string>
- zrevrangexxx() 系列方法 //先反序排列,再返回某个区间上的所有元素,set<string>
- zremrangebyxxx() 系列方法 //删除某个区间上的所有元素
list返回多个元素时用的是list,set、sorted set返回多个元素时用的是set,hash返回多个值时用的是map、list、set。
使用示例
1、简单测试
1 jedis jedis=new jedis("127.0.0.1"); 2 jedis.auth("abc"); 3 if (jedis.ping().equals("pong")){ //连接成功 4 jedis.mset("name","张三","age","20"); 5 system.out.println(jedis.get("name")); //张三 6 system.out.println(jedis.get("age")); //20 7 jedis.close(); 8 }
2、迭代数据库中所有的key
1 jedis jedis=new jedis("127.0.0.1"); 2 jedis.auth("abc"); 3 if (jedis.ping().equals("pong")){ //连接成功 4 jedis.flushall(); //清除其他数据 5 jedis.mset("name","张三","age","20"); 6 7 set<string> keys=jedis.keys("*"); 8 iterator<string> iterator=keys.iterator(); 9 10 string key=null; 11 while (iterator.hasnext()){ 12 key=iterator.next(); 13 system.out.println(key+":"+jedis.get(key)); //如果value不是string类型,此句代码会报错,所以之前flushall()清空了数据库,保证value都是string类型 14 } 15 16 jedis.close();
3、迭代hash、list、set、sorted set
1 jedis jedis=new jedis("127.0.0.1"); 2 jedis.auth("abc"); 3 if (jedis.ping().equals("pong")){ //连接成功 4 jedis.lpush("students","张三","李四","王五"); 5 6 list<string> list=jedis.lrange("students",0,-1); 7 iterator<string> iterator=list.iterator(); 8 9 while (iterator.hasnext()){ 10 system.out.println(iterator.next()); //王五、李四、张三 11 } 12 13 jedis.close(); 14 }
上一篇: 分享用于操作FTP的客户端C#类
下一篇: C#解决汉诺塔问题DEMO