下载Redis:
- 下载压缩包
地址:https://pan.baidu.com/s/1UBOoef_Szdkrzd0rJ2BeZg提取码:2gun
2.解压到自定义的reids文件夹,解压后如图所示
3.进自定义的redis文件夹,在地址栏输入cmd,点击回车
输入redis-server.exe redis.windows.conf出现[9920] 17 Nov 10:00:12.064 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error则运行成功
4.现在进入自定义的文件夹打开reids-cli.exe出现弹窗
5.ok目前你就可以在本地以cmd的方式使用redis了,接下来我会讲解如何在Java中使用redis数据库.
在Java中集成reids:
首先确保本地安装reids: 1.导入jar包
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
2.建立Jedis的全局变量
public class TestRedis {
public static Jedis jedis =null;
/**
* @BeforeClass
* 加载于静态方法之上一般,在所有方法执行前执行,只加载一次
*/
@BeforeClass
public static void init() {
jedis = new Jedis("localhost");
System.out.println(jedis.ping());
}
}
Jedis对Key的操作:
JAVA代码:
* Jedis对key 的一下操作
*/
@Test
public void keyTest(){
//exists(key)判断key值是否存在
Boolean exists = jedis.exists("key");
//del(key)删除一个key
Long del = jedis.del("key");
//type(key) 返回key值的类型
String type = jedis.type("key");
//keys(*)返回所有key值
Set<String> keys = jedis.keys("key");
//randomKey()随机返回空间中的一个key
String randomKey = jedis.randomKey();
//remname(oldname newname) 将key由oldname重命名为newname
String rename = jedis.rename("oldkey","newkey");
//dbSize()返回当前数据库中key的数目
Long dbSize = jedis.dbSize();
//expire(key time(毫秒)) 给key值设置过期时间
Long expire =jedis.expire("key",2000);
//ttl获得一个key的活动时间
Long ttl = jedis.ttl("key");
//select(index) 按照索引查询
String select = jedis.select(1);
//move(key,1)将当前数据库中的key转移到dbindex索引的数据库
Long move =jedis.move("key",1);
//flushDB()删除当前数据库中的所有key
String flushDB =jedis.flushDB();
//flishAll()删除数据库中的所有的key
String flushAll = jedis.flushAll();
}
Jedis对String的操作:
JAVA代码:
@Test
public void StringTest() throws InterruptedException {
//set(key value)
String set = jedis.set("key1", "value1");
System.out.println(set); //1.创建成功返回 "ok" 2.key的值如果一样,后一次添加的会覆盖之前的数据.
//get(key)
String get = jedis.get("key1");
System.out.println(get); //1.返回值为 "value1"
//getSet(key value) 给key重新赋值,并且返回被重新赋值前的value
String getSet = jedis.getSet("key1","value2");
System.out.println(getSet);
System.out.println(jedis.get("key1"));
//mget(key key1 key2 ...) 获取多个key对应的value
List<String> mget = jedis.mget("key1","key2","key3","key4");
for (String str : mget) {
System.out.println(str);
}
//setnx(key value)如果库不存在想要添加的key,就添加,可以避免覆盖
Long setnx = jedis.setnx("key7","value7");
System.out.println(setnx); // 成功返回 1
Long setnx1 = jedis.setnx("key7","value7");
System.out.println(setnx1); //失败返回 0
//setex(key time value)向库中添加的同时,设置时间
String setex = jedis.setex("key8",10,"value8");
System.out.println(setex);
for (int i = 0; i < 100; i++) {
System.out.println(jedis.get("key8"));
Thread.sleep(1000);
}
//mset(key value key1 value1 key2 value2 ...)
String mset = jedis.mset("key11","value11","key12","value12");
System.out.println(mset); //返回值为ok
//msetnx(key value key1 value1 key2 value2) 所有的值都不存在的时候就是保存
Long msetnx = jedis.msetnx("key14","value1-1","key13","value12");
System.out.println(msetnx); //返回值 成功为1 失败为0
//incr(key) 相当于value+1
Long incr = jedis.incr("111");
System.out.println(incr); //返回值为value+1 的值
// incrby(key,integer) 相当于value+integer
Long get1 = jedis.incrBy("111",6);
System.out.println(get); //返回值为value+integer的值
//decr(key) 相当于value-1
//decr(key integer) 相当于value-integer
//append("key" "content")
Long append =jedis.append("111","connect");
System.out.println(append); //返回值为value的长度
//substr("key") 返回value串
String substr = jedis.substr("111",0, -1);
System.out.println(substr); //0为起始位置,1为结尾位置
}
Jedis对list的操作:
JAVA代码
/**
* Jedis对List的操作
*/
@Test
public void ListTest(){
// //rpush() 在名为key的list尾部添加数据
Long rpush = jedis.rpush("key","1","2","3");
System.out.println(rpush); //返回值为当前list数据的个数
//
//lpush() 在名为key的list头部添加数据
Long lpush = jedis.lpush("key","9","8","7");
System.out.println(lpush); //返回值为当前list数据的个数
//
// //llen()查询名为key的list的长度
Long llen = jedis.llen("key");
System.out.println(llen); //返回值为当前list的长度
//
// lrange("key",0 -1)查询当前list,0代表从头部,-1代表从尾部
List<String> lrange = jedis.lrange("key1",0,-1);
for (String str : lrange) {
System.out.println(str);
}
// //ltrim(key 0 1) 截取名为key的list,保留起始到终止的元素
String ltrim = jedis.ltrim("key",0,1);
System.out.println(ltrim); //返回值为 ok
// //lindex(key 2) 返回名为key的list中位于index位置中的值
String lindex = jedis.lindex("key",0);
System.out.println(lindex);// 返回值为lindex位置的值
//lset(key index value) 将list中index中的值赋为value
String lset = jedis.lset("key",0,"999");
System.out.println(lset); //返回值为ok
//lrem(key count value)删除count个名为key的value元素
//当count =0 时删除所有
//当count >0 时从头部删除count个value元素
//当count <0 时从尾部删除count个value元素
//lpop(key)删除并返回名为key的list中的首元素
String lpop = jedis.lpop("key");
System.out.println(lpop);
// //rpop(key)删除并返回名为key的list中的尾元素
String rpop = jedis.rpop("key");
System.out.println(rpop);
//blpop(timeout,key key1 key2 ... )
//当timeout = 0 的时候 若遇到keyn不存在或者key对应的list 为空时,命令结束
//当timeout > 0 则等待timeout秒
//如果问题没有解决就从key+1开始的list执行pop操作
List<String> blpop = jedis.blpop(1000,"key","key1","key...");
// rpoplpush(key key1)删除key队尾元素,并添加到kye1的头部,并返回该值
String rpoplpush = jedis.rpoplpush("key","key1");
System.out.println(rpoplpush);
}
Jedis对set的操作:
JAVA代码:
/**
* Jedis对Set的操作
*/
@Test
public void SetTest(){
//sadd( key value) 向名为key的set中添加元素value
Long sadd = jedis.sadd("hello","world");
Long sadd1 = jedis.sadd("hello","11");
//srem(key value) 删除名为key中的元素value
Long srem = jedis.srem("hello","11");
//spop(key) 随机删除名为key中的一个元素
String spop = jedis.spop("key");
//smove(oldkey newkey value) 将value元素从oldkey 移动到newkey
Long smove= jedis.smove("oldkey","newkey","value");
//scard(key)返回名为key的set集合中元素的个数
Long scard = jedis.scard("key");
//sisnember(key value) 测试value是否是名为key的set元素的集合
Boolean sisnember = jedis.sismember("key","value");
//sinter(key1 key2 key3 ...)返回key1 key2 key3 的交集
Set<String> sinter = jedis.sinter("key1","key2","key3");
//sinterstore(newkey key1 key2 key3 )求key1 key2 key3 的交集,并将结果保存至newkey集合
Long sinterstore = jedis.sinterstore("newkey","key1","key2","key3");
//sunion(key1 key2 key3)求key1 key2 key3 的并集
Set<String> sunion = jedis.sunion("key1","key2","key3");
//sunionstore(newkey key1 key2...)求key1 key2的并集,并将结果给newkey
Long sunionstore = jedis.sunionstore("newkey","key1","key2");
//sdiff(key1 key2 key3)求key1 key2 key3 的差集
Set<String> sdiff = jedis.sdiff("key1","key2","key3");
//sdiffstore(newkey key1 key2 ...)查询key1 key2的差集,必将结果保存到newkey
Long diffstore = jedis.sdiffstore("newkey","key1","key2");
//smembers(key)返回名称为key的所有元素
Set<String> smembers = jedis.smembers("key");
//srandmember(key)随机返回一个名为key的set的元素
String srandmember = jedis.srandmember("key");
}
Jedis对Hash的操作:
JAVA代码:
/**
* Jedis对hash的操作
*/
@Test
public void HashTest(){
//hest(key,field,value) 向名为key的hash中添加field为键值,value为元素的数据
Long hset =jedis.hset("hash","name1","zedong");
//hget(key,filed) 获取名为key中filed对应的元素
String hget =jedis.hget("hash","name");
System.out.println(hget);
//List<String,Object> hmget(key,filed1,filed2,...)获取名为key中fileds的域
List<String> hmget = jedis.hmget("hash","name","age");
//gmset(key,hash)向key中增加hash对象
Map<String,String> map = new HashMap<>(3);
map.put("name","lilei");
map.put("age","13");
map.put("gender","man");
String hmset = jedis.hmset("key",map);
//hincrBy(key,filed,integer)给名为key的filed对应的value加1
Long hincrBy = jedis.hincrBy("key","filed",1);
//Boolean hexists("key","field")名为key的hash中是否存在名为name的域
Boolean hexists = jedis.hexists("hash","name");
//hdel(key,fields)删除hash中名为field中的域
Long hdel = jedis.hdel("hash","field1","field2");
//hlen(key)返回名为key中的hash的geshu
Long hlen =jedis.hlen("key");
//hkeys(key)返回名为key的hash中的所有的键
Set<String> heys = jedis.hkeys("hash");
//hvals(key)返回名为key中的value的集合
List<String> hvals = jedis.hvals("hash");
//hgetall(key) 返回名为key中的key-map 的集合
Map<String,String> hgetall = jedis.hgetAll("hash");
}