redis下载地址(下载最新的如果总是下载失败,可以尝试下载老一点的版本,个人推荐msi安装方式可以安装的时候就把配置搞定)
https://github.com/MicrosoftArchive/redis/releases
在idea创建的maven项目中添加依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
然后创建一个 jedisDemo 类,来介绍redis简单的命令,更多命令参见官网:
https://redis.io/commands
import redis.clients.jedis.Jedis;
/**
* Redis 数据库里面的每个键值对(key-value pair)都是由对象(object)组成的:
*其中, 数据库键总是一个字符串对象(string object);
*而数据库键的值则可以是字符串对象、 列表对象(list object)、 哈希对象(hash object)、 集合对象(set object)、 有序集合对象(sorted set object)这五种对象中的其中一种。
*/
public class JedisDemo {
//辅助函数
public static void print(int index,Object obj){
System.out.println(String.format("%d,%s",index,obj.toString()));
}
public static void main(String[] args) {
//new Jedis() 不传参数,默认6379的端口。这里面的9是选择第9个库(自带16个库)
Jedis jedis = new Jedis("redis://localhost:6379/9");
jedis.flushDB();//清除当前Jedis所有的key
// get set 命令
jedis.set("hello","world");//添加一个kv对
print(1,jedis.get("hello"));//通过键取出值和Map一个道理
jedis.setex("timeout",1800,"验证码已失效,请重新获取验证码");//设置键值对的时效,常用语验证码
//jedis 简单的数值操作: 加 减(ps:可用于页面浏览数的更新)
jedis.set("pv","100");
jedis.incr("pv");//pv ->101
jedis.incrBy("pv",5);//pv ->106
jedis.decrBy("pv",2);//pv ->104
print(2,jedis.get("pv"));
//jedis 中的list使用
String list = "list";
jedis.del(list);
for(int i=0;i<10;++i){
jedis.lpush(list,"a"+String.valueOf(i));//lpush向list中添加元素,lrange查出来0-3的的元素
}
print(4,jedis.lrange(list,0,3));// result: 4,[a9, a8, a7, a6]
print(4,jedis.llen(list));//计算列表的长度 4,10
print(4,jedis.lpop(list));//类似于弹栈,将a9 4,a9
print(4,jedis.lrange(list,2,6));// 4,[a6, a5, a4, a3, a2]
print(4,jedis.lindex(list,3));// 4,a5
print(4,jedis.linsert(list, BinaryClient.LIST_POSITION.AFTER,"a4","after"));
print(4,jedis.linsert(list, BinaryClient.LIST_POSITION.BEFORE,"a4","before"));
print(4,jedis.lrange(list,0,21));//4,[a8, a7, a6, a5, before, a4, after, a3, a2, a1, a0]
// hash 可以很方便的为改变象属性
String hash = "hash";
jedis.hset(hash,"name","tom");
jedis.hset(hash,"age","18");
jedis.hset(hash,"gender","man");
jedis.hset(hash,"phone","15233333333");
print(5,jedis.hget(hash,"name"));//tom
print(5,jedis.hgetAll(hash));//5,{name=tom, gender=man, phone=15233333333, age=18}
jedis.hdel(hash,"phone");//删除 phone 属性
print(5,jedis.hexists(hash,"phone"));//5,false 查询phone属性是否存在
print(5,jedis.hkeys("hash"));//5,[name, gender, age] 获取hash所有的key
print(5,jedis.hvals("hash"));//5,[tom, 18, man] 获取hash所有的values
jedis.hsetnx(hash,"name","xx");//如果属性name不存在则创建name属性列否则不再创建
jedis.hsetnx(hash,"school","njut");
print(5,jedis.hgetAll(hash));//5,{name=tom, gender=man, school=njut, age=18}
//set
String set1 = "set1";
String set2 = "set2";
for(int i=0;i<10;++i){
jedis.sadd(set1,String.valueOf(i));
jedis.sadd(set2,String.valueOf(i*i));
}
print(6,jedis.smembers(set1));//6,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(6,jedis.smembers(set2));//6,[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
//集合 并集
print(6,jedis.sunion(set1,set2));//6,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 25, 36, 49, 64, 81]
//集合 差集
print(6,jedis.sdiff(set1,set2));//6,[8, 2, 3, 5, 6, 7]
//集合 交集
print(6,jedis.sinter(set1,set2));
//判断某元素是否是集合一员
print(6,jedis.sismember(set1,"1"));//true
//删除集合中一员
jedis.srem(set1,"5");
print(6,jedis.smembers(set1));//6,[0, 1, 2, 3, 4, 6, 7, 8, 9]
jedis.smove(set2,set1,"25");//将set2中的25移动到set1中
print(6,jedis.smembers(set1));//6,[0, 1, 2, 3, 4, 6, 7, 8, 9, 25]
print(6,jedis.smembers(set2));//6,[0, 1, 4, 9, 16, 36, 49, 64, 81]
//求集合成员的总和, 和count的功能一致
print(6,jedis.scard(set2));//6,9
}
}