您的位置:首页 > 数据库 > Redis

redis操作五种数据类型

2019-08-21 16:02 1186 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_42618873/article/details/99970371

redis操作五种数据类型

需要下载Jedis驱动或引入依赖请点击下载(2.9.0版本)

package test;

import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
* @Title: RedisTest
* @Description: 测试连接Redis缓存数据库及Redis操作数据类型解析使用
* @author: wangsai
* @date 2019/8/21 11:20
*/

public class RedisTest {

/**
* 连接Redis缓存数据库
*/
public Jedis connRedisUtil(){
//连接本地Redis
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
//查看是否运行
System.out.println("服务正在运行:"+jedis.ping());
return jedis;
}

/**
* 测试Redis操作(crud)String(字符串)类型
*/
@Test
public void stringTest(){
//连接本地Redis
Jedis jedis = connRedisUtil();
//添加数据
jedis.set("xing","wang");
jedis.set("ming","sai");
//根据Key查找value
System.out.println("读取姓:"+jedis.get("xing")+" 读取名:"+jedis.get("ming")
+" 没有相应的Key时:"+ jedis.get("wangsai")); //当没有相应的Key时获取结果为null

//拼接字符串
jedis.append("xing","王");
System.out.println("拼接结果:"+jedis.get("xing"));
//覆盖Key即可修改value
jedis.rename("xing","姓");
//        jedis.set("xing","wang");//其中key是可以重命名的
System.out.println("覆盖即为修改:"+jedis.get("xing"));
//删除数据
jedis.del("xing");
jedis.del("ming");
//设置多个键值对
jedis.mset("name", "shi","age","22","sex","男");
//获取输出上边设置的多个键值对的值
System.out.println("多对键值对:"+jedis.mget("name","age","sex"));
jedis.del("name");
System.out.println("删除其中一个键值对:"+jedis.mget("name","age","sex"));
jedis.del("age","sex");
System.out.println("删除剩余的键值对:"+jedis.mget("name","age","sex"));
}

/**
* 测试Redis中的Hash(哈希)类型
*/
@Test
public void hashTest(){
//连接本地Redis
Jedis jedis = connRedisUtil();
Map<String,String> map = new HashMap<String,String>();
//向map中添加数据
map.put("name","王赛");
map.put("sex","男");
map.put("age","22");
jedis.hmset("student",map);
//取出student中的元素,执行结果是一个泛型的List
//第一个参数是存入redis中map对象的key,后面跟的是放入map中对象的key,后面的key可以是多个,是可变的
List<String> rsmap = jedis.hmget("student", "name","sex","age");
System.out.println(rsmap);

//删除map中的某个键值
/* jedis.hdel("student","age");
System.out.println(jedis.hmget("student","age"));//此时输出为null
jedis.hdel("student","name","sex");//删除剩余的键值对
System.out.println(jedis.hmget("student", "name","sex","age"));//此时全为空*/

System.out.println(jedis.hlen("student"));//返回key为student的键中存放的值的个数3
System.out.println(jedis.exists("student"));//是否存在key为student的记录,返回true
System.out.println(jedis.hkeys("student"));//返回map对象中的所有key
System.out.println(jedis.hvals("student"));//返回map对象中的所有value

Iterator<String> iter = jedis.hkeys("student").iterator();
while(iter.hasNext()) {
String key = iter.next();
System.out.println(key+":" + jedis.hmget("student", key));
}
jedis.hdel("student","name","sex","age");//删除剩余的键值对

}

/**
* 测试Redis中的List(列表)类型
*/
@Test
public void listCRUDTest(){
//连接本地Redis
Jedis jedis = connRedisUtil();
//清空数据
jedis.del("list");
//添加数据到列表中
jedis.lpush("list","王赛");
jedis.lpush("list","王世杰");
jedis.lpush("list","杜盈锐");
//获取数据并输出。其中第一个数字代表起始位置,后一个表示终止位置,-1表示读取全部
List<String> list = jedis.lrange("list",0,-1);
System.out.println(list);
//清空数据
jedis.del("list");
//使用rpush时,输出的顺序和添加时的顺序是一致的,lpush是相反的。即左右添加
jedis.rpush("list","spring");
jedis.rpush("list","struts");
jedis.rpush("list","hibernate");
System.out.println(jedis.lrange("list",0,-1));
jedis.del("list");
}

/**
* 测试Redis中的set(列表)类型
*/
@Test
public void setTest(){
//连接本地Redis
Jedis jedis = connRedisUtil();
//添加数据
jedis.sadd("student", "王赛");
jedis.sadd("student", "王世杰");
jedis.sadd("student","杜盈锐");

//删除数据
jedis.srem("student", "杜盈锐");
System.out.println(jedis.smembers("student"));//获取所有加入的value
System.out.println(jedis.sismember("student", "王赛"));//判断王赛是否是student集合的元素
System.out.println(jedis.srandmember("student"));//返回集合的一个随机元素
System.out.println(jedis.scard("student"));//返回集合的元素个数
jedis.srem("student","王赛","王世杰");
System.out.println(jedis.scard("student"));//返回集合的元素个数
}
/**
* 测试Redis中的sort set(有序列表)类型
*/
@Test
public void sortTest(){
//连接本地Redis
Jedis jedis = connRedisUtil();
//jedis 排序注意,此处的rpush和lpush是List的操作。是一个双向链表(单从表现来看的)
jedis.del("a");//先清除数据,再加入数据进行测试
jedis.rpush("a", "6");
jedis.lpush("a", "1");
jedis.lpush("a", "8");
jedis.lpush("a", "3");
System.out.println(jedis.lrange("a", 0, -1));
System.out.println(jedis.sort("a"));//[1,3,6,9] //输出排序后结果
System.out.println(jedis.lrange("a", 0, -1));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: