java redis 添加数据类型_java操作redis的五种数据类型

本文通过Java实现Redis的五大数据类型操作,包括String、List、Hash、Set和ZSet的添加、删除、查询等基本操作。通过示例代码详细介绍了如何使用Jedis库进行Redis的数据操作。
摘要由CSDN通过智能技术生成

一、项目必备Jar包

redis.clients

jedis

2.9.0

commons-pool

commons-pool

1.6

junit

junit

4.12

二、实例与结构

1)远程连接redis,清空数据库                     new Jedis(redis服务连接IP,端口)

private static Jedis jedis;

@Before

public void before(){

jedis= JedisConnectUtil.getJedis(JedisTest.URL,63**);

jedis.flushDB();

}

2)String类型

@Test

public void testString(){

//设置键 获取键 get set

jedis.set("steve","stevetao");

System.out.println("设置后值:"+jedis.get("steve"));

//追加键 append

jedis.append("steve"," Is Good Man");

System.out.println("追加后值:"+jedis.get("steve"));

//删除操作 del

jedis.del("steve");

System.out.println("删除后值:"+jedis.get("steve"));

//不存在就保存, setnx msetnx

jedis.setnx("steve","stevetao");

System.out.println("设置后值:"+jedis.get("steve"));

System.out.println("再次设置后值:"+jedis.setnx("steve","stevetao"));

//截取字符串 substr

System.out.println("截取后值:"+jedis.substr("steve",0,4));

//设置多个键值对 mset mget

jedis.mset(new String[]{"zhangsan","123","lisi","1234"});

System.out.println("多次设置后值:"+jedis.mget("zhangsan","lisi"));

//递增递减 incr decr incrby decrby

jedis.incr("zhangsan");

jedis.decr("lisi");

System.out.println("递增递减后值:"+jedis.mget("zhangsan","lisi"));

jedis.incrBy("zhangsan",6);

jedis.decrBy("lisi",3);

System.out.println("递增递减后值:"+jedis.mget("zhangsan","lisi"));

}

e2d7a0a8abb7d1ecd5331f37cab87c97.png

3)List类型

@Test

public void testList(){

//尾添加 rpush 头添加 lpush

jedis.lpush("books","java","C++","Ruby","Scala","python");

jedis.rpush("language","java","C++","Ruby","Scala","python");

// -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

System.out.println("头添加后books值:"+jedis.lrange("books",0,-1));

System.out.println("尾添加后language值:"+jedis.lrange("language",0,-1));

//尾部删除 rpop 头部删除 lpop

System.out.println("删除的值为:"+jedis.lpop("books"));

System.out.println("删除的值为:"+jedis.rpop("language"));

System.out.println("头部删除后books值:"+jedis.lrange("books",0,-1));

System.out.println("尾部删除后language值:"+jedis.lrange("language",0,-1));

//尾部删除并头添加 rpoplpush

jedis.rpoplpush("language","books");

System.out.println("尾部删除并头添加后books值:"+jedis.lrange("books",0,-1));

System.out.println("尾部删除并头添加后language值:"+jedis.lrange("language",0,-1));

//区别: 只能给存在的list做添加,不能项lpush那样能新增list

jedis.lpushx("books","php");

jedis.lpushx("book","php");

System.out.println("头添加后books值:"+jedis.lrange("books",0,-1));

System.out.println("头添加后book值:"+jedis.lrange("book",0,-1));

//获取集合长度 llen 指定索引的值 lindex 保留截取的值 ltrim

System.out.println("books集合长度:"+jedis.llen("books"));

System.out.println("books集合第二个数值:"+jedis.lindex("books",1));

jedis.ltrim("books",0,2);

System.out.println("截取后books值:"+jedis.lrange("books",0,-1));

}

e8a73b1445d47a2cf93f8f82250bee4a.png

4)Hash类型

@Test

public void testHash(){

//适合字段:设值hset 取值hget(如果value是json字符串,类似保存对象)

jedis.hset("student","name","zhangsan");

System.out.println("student中name的值为:"+jedis.hget("student","name"));

//适合对象:设值hmset 取值hmget

Map map = new HashMap();

map.put("name", "lisi");

map.put("age", "36");

jedis.hmset("teacher",map);

System.out.println("teacher中name、age的值为:"+jedis.hmget("teacher","name","age"));

//teacher是否存在键age hexists

if(jedis.hexists("teacher","age")){

//给指定值增加4 hincrBy

jedis.hincrBy("teacher","age",4);

System.out.println("teacher中name、age的值为:"+jedis.hmget("teacher","name","age"));

}

//返回key的个数hlen 返回值hvals 返回键hkeys 键值对hgetAll

jedis.hset("student","age","13");

jedis.hset("student","qq","2246920330");

jedis.hset("student","address","beijing");

System.out.println("student中键的个数为:"+jedis.hlen("student"));

System.out.println("student中所有的键为:"+jedis.hkeys("student"));

System.out.println("student中所有的值为:"+jedis.hvals("student"));

System.out.println("student中所有的键值对为:"+jedis.hgetAll("student"));

//删除 hdel

jedis.hdel("student",new String[]{"address","qq","age"});

System.out.println("删除后,student中所有的键值对为:"+jedis.hgetAll("student"));

}

ecc8fda7a16d77766b6d0acc29e6f14e.png

5)Set类型

@Test

public void testSet(){

//set中添加值 sadd 取值 smembers

jedis.sadd("student","Jan","John","Steve","jack","lili","peter","Anna");

jedis.sadd("girls","Jan","lili","Alice","Jeanne","Anna");

System.out.println("排名不分先后:"+jedis.smembers("student"));

//set个数 scard 是否存在某个值 sismember

System.out.println("set集合的个数:"+jedis.scard("student"));

System.out.println("student是否存在steve:"+jedis.sismember("student","Steve"));

System.out.println("student是否存在stevetao:"+jedis.sismember("student","Stevetao"));

//System.out.println(jedis.sscan("student","0").getResult());

//删除指定的值 srem 随机删除并返回 spop

System.out.println("删除指定的值Steve:"+jedis.srem("student","Steve"));

System.out.println("删除的值为:"+jedis.spop("student"));

System.out.println("再次排名不分先后:"+jedis.smembers("student"));

//集合操作

System.out.println("两个set的交集:"+jedis.sinter("student","girls"));

System.out.println("两个set的并集:"+jedis.sunion("student","girls"));

System.out.println("student对girls的差集:"+jedis.sdiff("student","girls"));

System.out.println("girls对student的差集:"+jedis.sdiff("girls","student"));

//集合操作并保存

jedis.sinterstore("jiaoji","student","girls");

jedis.sunionstore("bingji","student","girls");

jedis.sdiffstore("chaji","student","girls");

System.out.println("交集:"+jedis.smembers("jiaoji"));

System.out.println("并集:"+jedis.smembers("bingji"));

System.out.println("student对girls的差集:"+jedis.smembers("chaji"));

}

ed1fdbcb262919e8e6174d9b9c83a78e.png

6)ZSet类型

@Test

public void testZset(){

jedis.zadd("math",75,"Jim");

jedis.zadd("math",86,"Lina");

jedis.zadd("math",52,"Dive");

jedis.zadd("math",91,"Bobber");

System.out.println("有序集合的成员数:"+jedis.zcard("math"));

System.out.println("有序集合的成员:"+jedis.zrevrangeByScore("math",100,0));

//返回set

System.out.println("有序集合的成员:"+jedis.zrangeWithScores("math",0,100));

}

8a735fce0d2ba4b81867b3ffa03fee9d.png

这些简单的操作,可以找下API文档,每一个都试一遍。基本上和Linux里的命令相差不大,如果命令熟了,那么使用jedis应该很快就能上手了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一种内存数据库,具有高速读写的能力和高可靠性,它有五种主要的数据类型: 1.字符串类型(String) 因为Redis始终将所有数据保存在内存中,所以字符串是Redis最基本和最常见的数据类型Java中可以使用Jedis库来操作字符串类型。使用Jedis库,可以通过字符串的方式来获取、设置、修改和删除Redis中的数据。 2.哈希类型(Hash) 哈希类型可以被看做是一个存储键值对的数据结构,它可以存储不同的字段和值。在Java中,可以使用Jedis库来操作哈希数据类型。通过哈希结构的特殊方式,可以实现快速查找和修改。 3.列表类型(List) Redis的列表类型是一个可根据索引位置访问和定位的集合,可以存储任何类型的数据。在Java中,可以使用Jedis库来操作Redis的列表数据类型。可以使用列表结构来处理类似于队列、栈等数据结构。 4.集合类型(Set) Redis的集合类型是一个无序且不重复的数据集合,可以存储任何类型的数据。在Java中,可以使用Jedis库来操作Redis的集合数据类型。使用集合类型,可以处理类似于交集、并集和差集等集合操作。 5.有序集合类型(Sorted Set) 有序集合类型Redis中最复杂的数据类型之一,它存储在一个排序列表中,并且每个元素都可以与一个分数相关联。在Java中,可以使用Jedis库来操作Redis的有序集合数据类型。使用有序集合类型,可以实现快速查找、排序和范围查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值