redis的五种基本数据类型学习

前言

学习redis的五种基本数据类型,需先安装redis客户端,后启动redis,方便程序连接redis,并进行存取操作。
如图,为启动后的redis客户端:

如图,为启动后的redis客户端

连接redis(这里使用jedis连接)

//redis客户端
Jedis jedis = new Jedis(“127.0.0.1”,6379);

1.String类型

存入数据:

//String类型
jedis.set(“wang”,“zhengwei”);
String name = jedis.get(“wang”);
System.out.println(name);

程序运行结果:

zhengwei

将key对应的value减1:

// 将key对应的value减一
jedis.set(“num”,“10”);
jedis.decr(“num”);
String number = jedis.get(“num”);
System.out.println(number);

程序运行结果:

9

将key对应的value减去指定数字:

jedis.decrBy(“num”,5);
number = jedis.get(“num”);
System.out.println(number);

程序运行结果:

4

mset批量存入String类型:

// mset批量存入String类型
jedis.mset(“num0”,10+"",“num1”,11+"");
System.out.println(jedis.get(“num0”)+"----------"+jedis.get(“num1”));

程序运行结果:

10----------11

设置带有失效时间的value:

// 设置带有失效时间的value
jedis.setex(“age”, 20,“30”);
System.out.println(jedis.get(“age”));

第二个参数是失效时间
程序运行结果:

30

20秒后,再次运行

System.out.println(jedis.get(“age”));

程序运行结果:

null

String写入速度:

//String存入速度
long startTime = System.currentTimeMillis();
for(int n=0;n<100000;n++){
jedis.set(“SPEED:”+n,n+"");
}
System.out.println(“String写入10万条数据耗时:”+(System.currentTimeMillis()-startTime));

程序运行结果:

String写入10万条数据耗时:7220

String 读取速度:

// String 读取速度
Long redTime = System.currentTimeMillis();
for(int m =0;m<100000;m++){
jedis.get(“SPEED:”+m);
}
System.out.println(“String读取10万条数据耗时:”+(System.currentTimeMillis()-redTime));

程序运行结果:

String读取10万条数据耗时:5416

mset批量存入String类型:

// mset批量存入String类型
jedis.mset(“num0”,10+"",“num1”,11+"");
System.out.println(jedis.get(“num0”)+"----------"+jedis.get(“num1”));

程序运行结果:

10----------11

输入输出流的形式存取实体:

//输入输出流的形式存取实体
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(byteArrayOutputStream);
oos.writeObject(myCar);
byte[] obyte = byteArrayOutputStream.toByteArray();
jedis.set(“mycar”.getBytes(),obyte);
//从redis拿出实例
byte[] myCarResp = jedis.get(“mycar”.getBytes());
ByteArrayInputStream bais = new ByteArrayInputStream(myCarResp);
ObjectInputStream ois = new ObjectInputStream(bais);
Car car = (Car)ois.readObject();
System.out.println(“car----------”+car);

程序运行结果:

car----------Car(name=法拉利, color=red, age=2)

json方式存取实例:

//json方式存取实例
Car yourCar = new Car(“BMW”,“white”,1);
String jsonString = JSONObject.toJSONString(yourCar);
jedis.set(“yourCar”,jsonString);
System.out.println(“yourCar---------”+jedis.get(“yourCar”));
String jsonString2 = jedis.get(“yourCar”);
Car yourCar2 = JSON.parseObject(jsonString2,Car.class);
System.out.println(“yourCar2---------------”+yourCar2);

程序运行结果:

yourCar---------{“age”:1,“color”:“white”,“name”:“BMW”}
yourCar2---------------Car(name=BMW, color=white, age=1)

2.list类型

存入数据:

//list类型
List stringList = new ArrayList();
stringList.add(“红色的2年的法拉利”);
stringList.add(“a white 1-year-old BMW”);
String listJson = JSONObject.toJSONString(stringList);
jedis.set(“StringList”,listJson);
System.out.println(jedis.get(“StringList”));

程序运行结果:

[“红色的2年的法拉利”,“a white 1-year-old BMW”]

list的存入速度:

//list的存入速度
Long listReadTime = System.currentTimeMillis();
for(int j = 0;j<100000;j++){
List carList = new ArrayList();
String listName = “carList:”+j;
Car car1 = new Car();
car1.setAge(j);
car1.setName(“BMW”);
car1.setColor(“黑色”);
carList.add(car1);
// 把key和value分别序列化后存储
jedis.set(listName.getBytes(),SerializeUtil.serialize(carList));
}
System.out.println(“List写入10万条数据耗时:”+(System.currentTimeMillis()-listReadTime));

程序运行结果:

List写入10万条数据耗时:6965

list的读取速度:

// list的读取速度
Long listTime = System.currentTimeMillis();
for(int j = 0;j<100000;j++){
String listName = “carList:”+j;
// 取出存储的数据
jedis.get(listName.getBytes());
}
System.out.println(“List取出10万条数据耗时:”+(System.currentTimeMillis()-listTime));

程序运行结果:

List取出10万条数据耗时:5508

3.hash类型

存入数据:

//hash数据
jedis.hset(“wangzhengwei”,“BMW”,“740”);
jedis.hset(“wangzhengwei”,“Benz”,“S400”);
jedis.hset(“wangzhengwei”,“prosche”,“911”);
System.out.println(jedis.hgetAll(“wangzhengwei”));
System.out.println(jedis.hget(“wangzhengwei”,“BMW”));
System.out.println(jedis.hkeys(“wangzhengwei”));
System.out.println(jedis.hvals(“wangzhengwei”));

程序运行结果:

{Benz=S400, BMW=740, prosche=911}
740
[Benz, BMW, prosche]
[740, S400, 911]

增加value的值、删除一个key-value:

jedis.hincrBy(“wangzhengwei”,“BMW”,10);
System.out.println(jedis.hget(“wangzhengwei”,“BMW”));
jedis.hdel(“wangzhengwei”,“prosche”,“sfasdf”);
System.out.println(jedis.hgetAll(“wangzhengwei”));

程序运行结果:

750
{Benz=S400, BMW=750}

4.set类型

存入数据:

//set数据
jedis.sadd(“chenshiliang”,“lanbojini”,“laosilaisi”,“宾利”);
System.out.println(jedis.smembers(“chenshiliang”));
// 判断set中是否存在某个值
System.out.println(jedis.sismember(“chenshiliang”,“laosilaisi”));
jedis.sadd(“wangmao”,“lanbojini”);
System.out.println(jedis.sdiff(“chenshiliang”,“wangmao”));

程序运行结果:

[宾利, lanbojini, laosilaisi]
true
[宾利, laosilaisi]

求补集、交集、并集:

jedis.sdiffstore(“dis”,“chenshiliang”,“wangmao”);
System.out.println(jedis.smembers(“dis”));
jedis.sinterstore(“own”,“chenshiliang”,“wangmao”);
System.out.println(jedis.smembers(“own”));
jedis.sadd(“wangmao”,“大众”,“红旗”);
System.out.println(jedis.sunion(“chenshiliang”,“wangmao”));

程序运行结果:

[宾利, laosilaisi]
[lanbojini]
[宾利, lanbojini, 红旗, 大众, laosilaisi]

set存入速度:

// set存入速度
Long setTime = System.currentTimeMillis();
for(int b=0;b<10000;b++){
jedis.sadd(“SET”,“TESTSET:”+b);
}
System.out.println(“SET存1万条数据耗时:”+(System.currentTimeMillis()-setTime));

程序运行结果:

SET存1万条数据耗时:574

5.zset有序集合

存取数据:

//zset有序集合
Map<String ,Double> zmap = new HashMap<String ,Double>();
zmap.put(“lifeiyang”,90.0);
zmap.put(“wangmao”,70.0);
zmap.put(“chenshiliang”,98.0);
System.out.println(jedis.zadd(“test”,zmap));
System.out.println(jedis.zrange(“test”,0,2));
System.out.println(jedis.zrange(“test”,0,1));
System.out.println(jedis.zrange(“test”,0,3));
System.out.println(jedis.zrange(“test”,2,3));
System.out.println(jedis.zrevrange(“test”,1,2));
System.out.println(jedis.zrank(“test”,“wangmao”));
System.out.println(jedis.zrank(“test”,“lifeiyang”));

程序运行结果:

0
[wangmao, lifeiyang, chenshiliang]
[wangmao, lifeiyang]
[wangmao, lifeiyang, chenshiliang, guodongchao]
[chenshiliang, guodongchao]
[guodongchao, chenshiliang]
0
1

存入数据排序:
此处的排序是根据第二个参数分数来排序的

jedis.zincrby(“test”,40.0,“wangmao”);
System.out.println(jedis.zrange(“test”,0,3));
jedis.zadd(“test”,98,“guodongchao”);
System.out.println(jedis.zrevrange(“test”,0,4));

程序运行结果:

[lifeiyang, chenshiliang, guodongchao, huangmao, wangmao]
[wangmao, huangmao, guodongchao, chenshiliang, lifeiyang]

zset的存取效率:

//zset的存取效率
Long zsetTime = System.currentTimeMillis();
for(double i = 0;i<10000;i++){
jedis.zadd(“ZSET”,i,“TEST:”+i);
}
System.out.println(“ZSET存1万条数据耗时:”+(System.currentTimeMillis()-zsetTime));

程序运行结果:

ZSET存1万条数据耗时:571

欢迎大家一起学习、交流!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值