对redis数据库 数据各类型的操作
不了解Redis数据库的大家可以参考前两节
Redis基础 点击此处
Redis基本操作 点击此处
此文章是对上节操作的补充和细化 我写了详细的注释 大家可以参考的看一下
导入依赖
代码语言:javascript复制<!-- redis依赖 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
方法
代码语言:javascript复制 public static void print(int index,Object obj){
//输出的工具类
System.out.println(String.format("%d,%s",index ,obj.toString()));
}
public static void main(String[] args) {
Jedis jedis = new Jedis();//默认连接本地
jedis.flushAll();//数据库数据全部删除
jedis.set("a","b");//存一个String类型的数据
// jedis.get("a");
print(1,jedis.get("a"));
//更改key值
jedis.rename("a","hello");
print(1,jedis.get("hello"));
jedis.setex("hello2",15,"world");//添加一个新的string串 设置15秒的过期时间 过了15秒会自动删除
//假设PV 是一个网页有多少人访问
jedis.set("pv","100");
jedis.incr("pv");//增加一个
print(2,jedis.get("pv"));
jedis.incrBy("pv",5);//一次增加五个
print(2,jedis.get("pv"));
/**
* 操作list
*/
String listName="listA";
for(int i=0;i<10; i){
//加入十条
jedis.lpush(listName,"a" String.valueOf(i));
}
//取出 0-12条
print(3,jedis.lrange(listName,0,12));
//查看一共多少条
print(4,jedis.llen(listName));
//弹出之后就会减少一条
print(5,jedis.lpop(listName));
//查看
print(7,jedis.lrange(listName,0,12));
//查看第三个数据
print(8,jedis.lindex(listName,3));
//插入数据 参数:插入那条key 插入方式(插入前面还是后面) 插在那条数据前面或者后面 插入的值value
//插入可以做什么 来访记录
//前插
print(9,jedis.linsert(listName, BinaryClient.LIST_POSITION.AFTER,"a4","Aa"));
//后插
print(10,jedis.linsert(listName, BinaryClient.LIST_POSITION.BEFORE,"a4","aA"));
//查看数据
print(11,jedis.lrange(listName,0,12));
//操作hash类型数据
//可以用来添加不确定有多少属性的时候 比如一个人考完试要添加成绩 被录取了要新添加一个学校
String userKey="user11";//代表12这个用户
jedis.hset(userKey,"name","tom");//添加一个数据 这个人是user 名字是tom
jedis.hset(userKey,"age","12");//年龄
jedis.hset(userKey,"phone","13836978520");//添加联系方式
//取出 取出这个用户的姓名
print(12,jedis.hget(userKey,"name"));
//取出这个用户的所有属性
print(13,jedis.hgetAll(userKey));
//删掉一个字段 指定哪个用户的 哪个字段
jedis.hdel(userKey,"phone");
print(14,jedis.hgetAll(userKey));
//获取 所有的key
print(15,jedis.hkeys(userKey));
//获取所有的values
print(16,jedis.hvals(userKey));
//判断是否存在某个字段
print(17,jedis.hexists(userKey,"phone"));
print(18,jedis.hexists(userKey,"age"));
//如果字段不存在的话设置 如果存在就不设置了
jedis.hsetnx(userKey,"school","zg");
//因为name这个字段已经存在了 所以没有设置
jedis.hsetnx(userKey,"name","cat");
print(19,jedis.hgetAll(userKey));
/**
* 操作set集合
*/
String likeKeys1="newsLike1";
String likeKeys2="newsLike2";
for (int i=0;i<10 ; i){
jedis.sadd(likeKeys1,String.valueOf(i));
//都是偶数
jedis.sadd(likeKeys2,String.valueOf(i*2));
}
//打印出来
print(20,jedis.smembers(likeKeys1));
print(21,jedis.smembers(likeKeys2));
//求交 就是求两个集合的相同属性 例如:我们聊天软件中的共同好友功能
print(22,jedis.sinter(likeKeys1,likeKeys2));
//求并
print(23,jedis.sunion(likeKeys1,likeKeys2));
//求不同 一有二没有的
print(24,jedis.sdiff(likeKeys1,likeKeys2));
//判断0是否存在
print(25,jedis.sismember(likeKeys1,"9"));
//删除第一个里面的9
jedis.srem(likeKeys1,"9");
print(26,jedis.smembers(likeKeys1));
//判断元素有多少个
print(27,jedis.scard(likeKeys1));
//把 14 从二集合移动到一集合里面
jedis.smove(likeKeys2,likeKeys1,"14");
print(28,jedis.scard(likeKeys1));
//查看一集合的所有元素
print(29,jedis.smembers(likeKeys1));
/**
* 操作sortedset类型
* 该类型很常用 通常用作排行榜
*/
String rankKey="rankKey";
//每个存储的 我们都需要为这个数据赋上一个 分值
// 设置tom的分值为15
jedis.zadd(rankKey,15,"tom");
jedis.zadd(rankKey,65,"cat");
jedis.zadd(rankKey,70,"mini");
jedis.zadd(rankKey,85,"jik");
jedis.zadd(rankKey,90,"lucy");
//查看一共有多少个值
print(30,jedis.zcard(rankKey));
//查看区间内有多少人
//查看60-100区间内有多少人
print(31,jedis.zcount(rankKey,60,100));
//查看某一个的分值 查看jik的分值
print(32,jedis.zscore(rankKey,"jik"));
//把cat的分值提高五分
jedis.zincrby(rankKey,5,"cat");
print(33,jedis.zscore(rankKey,"cat"));
//给一个不存在得人提分
jedis.zincrby(rankKey,5,"cot");
//并且查看这个人的分值
print(34,jedis.zscore(rankKey,"cot"));
print(35,jedis.zcount(rankKey,0,100));
//获取排名的后三位 从小到大排序
print(36,jedis.zrange(rankKey,0,2));
//获取排名前三位 从大到小排序
print(37,jedis.zrevrange(rankKey,0,2));
//把所有的数据打印出来 0-100的所有元素和分值
for(Tuple tuple:jedis.zrangeByScoreWithScores(rankKey,0,100)){
//打印元素和分值 从低到高
print(38,tuple.getElement() ":" String.valueOf(tuple.getScore()));
}
//获取某一个人的排名 从小到大 从零开始
print(39,jedis.zrank(rankKey,"cat"));
//获取某一个人的排名 从大到小 从零开始
print(40,jedis.zrevrank(rankKey,"cat"));
//关闭连接
jedis.close();
}
结果图