大数据之路Week10_day05 (JavaAPI 操作Redis 第一阶段)
刚开始学习JavaAPI的时候,主要是对redis中的字符串,字节位图,列表,集合,有序集合进行操作,并能够完成简单的需求。
package com.wyh.redis; import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set; public class RedisApi {
public static void main(String[] args) {
Jedis master = new Jedis("master", 6379);
master.set("001","123");
String s = master.get("001");
System.out.println(s);
master.close(); } Jedis master;
JedisPool masterPool; @Before
public void init(){
master = new Jedis("master", 6379); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(10); masterPool = new JedisPool(jedisPoolConfig, "master", 6379); } /**
* 字符串练习
*/
@Test
public void String(){
Jedis resource = masterPool.getResource();
resource.set("002","xiaohu");
String s = resource.get("002");
System.out.println(s);
resource.close();
} /**
* bitmap练习
*/
@Test
public void bitmap(){
Jedis resource = masterPool.getResource();
resource.setbit("b1",1,true);
resource.setbit("b1",3,true);
resource.setbit("b1",5,true); //获取当前位是1还是0 1返回true,0则返回false
Boolean b1 = resource.getbit("b1", 3);
System.out.println(b1); //获取该键值中有多少个1
Long b11 = resource.bitcount("b1");
System.out.println(b11);
resource.close();
} /**
*list练习
*
*/
@Test
public void list(){
Jedis resource = masterPool.getResource();
resource.lpush("shujia06","王友虎","赵以浩","江蒗","尹可洋");
String shujia006 = resource.lpop("shujia06");
System.out.println(shujia006); //一次获取该键的所有值
List<String> shujia0061 = resource.lrange("shujia06", 0, -1);
System.out.println(shujia0061);
resource.close();
} /**
*
* HashMap的练习 将学生表添加到redis
*/
@Test
public void hashMap(){ try {
BufferedReader br = new BufferedReader(new FileReader("D:\\shujia\\shujia006\\hadoop\\src\\data\\students.txt"));
String line;
while ((line=br.readLine())!=null){
String[] split = line.split(",");
String id = split[0]; String key = "student"+":"+id; String name = split[1];
String age = split[2];
String gender = split[3];
String clazz = split[4]; HashMap<String, String> map = new HashMap<>();
map.put("name",name);
map.put("age",age);
map.put("gender",gender);
map.put("clazz",clazz); master.hmset(key,map);
} Set<String> keys = master.keys("student*");
System.out.println(keys);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} } /**
* 获取所有学生信息
*/
@Test
public void hGetAll(){ Set<String> keys = master.keys("student*"); for (String key : keys) {
Map<String, String> stringStringMap = master.hgetAll(key);
for (Map.Entry<String, String> stringStringEntry : stringStringMap.entrySet()) {
String value = stringStringEntry.getValue();
System.out.print(value);
System.out.print("\t");
}
System.out.println();
}
} /**
* 共同好友(交集)
*
*/
@Test
public void sinter(){
master.sadd("weibo:王友虎","赵以浩");
master.sadd("weibo:王友虎","李宏灿");
master.sadd("weibo:王友虎","齐博源");
master.sadd("weibo:王友虎","李先锋"); master.sadd("weibo:赵以浩","李先锋");
master.sadd("weibo:赵以浩","王友虎");
master.sadd("weibo:赵以浩","齐博源");
master.sadd("weibo:赵以浩","黄天祥"); Set<String> sinter = master.sinter("weibo:王友虎", "weibo:赵以浩");
System.out.println("他们的共同好友为:");
System.out.println(sinter); } /**
* 有序集合
*/
@Test
public void numSet(){
master.zadd("shujia",1.0,"赵以浩");
master.zadd("shujia",1.0,"李宏灿");
master.zadd("shujia",1.0,"齐博源");
master.zadd("shujia",1.0,"李先锋"); master.zadd("shujia",2.0,"李先锋");
master.zadd("shujia",2.0,"王友虎");
master.zadd("shujia",2.0,"齐博源");
master.zadd("shujia",2.0,"黄天祥"); // HashMap<String, Integer> map = new HashMap<>();
//
Set<String> s1 = master.zrangeByScore("shujia", 1.0, 1.0);
// for (String s : s1) {
// map.put(s,1);
// }
//
Set<String> s2 = master.zrangeByScore("shujia", 2.0, 2.0);
// for (String s : s2) {
// map.put(s,1);
// }
//
// System.out.println("他们所有的好友为:");
// for (Map.Entry<String, Integer> stringIntegerEntry : map.entrySet()) {
// String key = stringIntegerEntry.getKey();
// System.out.println(key);
// } System.out.println(s1);
System.out.println(s2); } @After
public void close(){
masterPool.close();
master.close(); }
}
在其中,有一个新的知识点,就是 JedisPool ,可以先创建好jedis连接对象,在需要的时候,从里面拿,也可以设置个数。
但是注意:
1、我在代码中设置的是100个最大,我在将学生信息往redis中添加的时候,卡住不动了,我以为是代码出错,结果检查redis客户端软件发现,只插入了100条数据,剩下的900条数据都没有添加,这是为什么,因为我的“池子”中最大是100个,将其换成普通的获取连接就可以了,但是后面在写代码的过程中发现,我在循环添加的时候,并未添加一条就将这个连接关闭,逻辑上而是等全部添加完毕才将其关闭,啊。。原来原因在这,问题解决。
2、一开始我想使用有序集合去将两个人的共同好友获取出来,后面发现,我在添加的时候,就算score是可以重复的,value值都是不可以重复的,尽管score不一样,在一个表中,它就是不可以重复的,后来经过查资料,我改用set集合,无序的,两个不同的表,进行sinter的方法取交集,获取到了共同好友。
3、这里我遗留了一个问题,发现了一个我觉得很重要,通过百度也发现它很重要的东西,就是scan,hscan等,在上面的一个问题中我通过观察方法发现的,目前没有仔细了解,后面会补充。
大数据之路Week10_day05 (JavaAPI 操作Redis 第一阶段)的更多相关文章
- 大数据之路week04--day06(I/O流阶段一 之异常)
从这节开始,进入对I/O流的系统学习,I/O流在往后大数据的学习道路上尤为重要!!!极为重要,必须要提起重视,它与集合,多线程,网络编程,可以说在往后学习或者是工作上,起到一个基石的作用,没了地基,房 ...
- 大数据之路week05--day01(I/O流阶段一 之File)
众所周知,我们电脑中有许许多多的文件夹和文件,文件的形式也有许多不同的格式,文件夹中也可以新建文件夹的存在,也就是多层的一步一步的嵌套. 我们想要实现I/O操作,就必须知道硬盘上文件的表现形式. 而J ...
- 胖子哥的大数据之路(6)- NoSQL生态圈全景介绍
引言: NoSQL高级培训课程的基础理论篇的部分课件,是从一本英文原著中做的摘选,中文部分参考自互联网.给大家分享. 正文: The NoSQL Ecosystem 目录 The NoSQL Eco ...
- Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...
- C#码农的大数据之路 - 使用C#编写MR作业
系列目录 写在前面 从Hadoop出现至今,大数据几乎就是Java平台专属一般.虽然Hadoop或Spark也提供了接口可以与其他语言一起使用,但作为基于JVM运行的框架,Java系语言有着天生优势. ...
- 胖子哥的大数据之路(10)- 基于Hive构建数据仓库实例
一.引言 基于Hive+Hadoop模式构建数据仓库,是大数据时代的一个不错的选择,本文以郑商所每日交易行情数据为案例,探讨数据Hive数据导入的操作实例. 二.源数据-每日行情数据 三.建表脚本 C ...
- 胖子哥的大数据之路(9)-数据仓库金融行业数据逻辑模型FS-LDM
引言: 大数据不是海市蜃楼,万丈高楼平地起只是意淫,大数据发展还要从点滴做起,基于大数据构建国家级.行业级数据中心的项目会越来越多,大数据只是技术,而非解决方案,同样面临数据组织模式,数据逻辑模式的问 ...
- 胖子哥的大数据之路(7)- 传统企业切入核心or外围
一.引言 昨天和一个做互联网大数据(零售行业)的朋友交流,关于大数据传统企业实施的切入点产生了争执,主要围绕两个问题进行了深入的探讨: 问题1:对于一个传统企业而言什么是核心业务,什么是外围业务? 问 ...
- 胖子哥的大数据之路(四)- VisualHBase功能需求框架
一.引言 大数据在结构化数据存储方面的应用需求越来越明确,但是大数据环境下辅助开发工具的不完善,给数据库管理人员和开发人员带来的不变难以言表,基于此创建了开源项目VisualHBase,同时创建了Vi ...
- 大数据之路week01--自学之集合_1(Collection)
经过我个人的调查,发现,在今后的大数据道路上,集合.线程.网络编程变得尤为重要,为什么? 因为大数据大数据,我们必然要对数据进行处理,而这些数据往往是以集合形式存放,掌握对集合的操作非常重要. 在学习 ...
随机推荐
- C++顺序结构(2)学习任务
在坚果云中注册免费个人云盘 一.视频下载存放在规划好的文件夹中,并观看学习 1.变量存储.注释 2.四则运算.输入 3.认识设置DEV-C++ 4.第一个C++程序 5.头文件 6.命名空间 7.co ...
- TensorFlow 中 conv2d 的确切含义
在读: <TensorFlow:实战Google深度学习框架> 才云科技Caicloud, 郑泽宇, 顾思宇[摘要 书评 试读]图书https://www.amazon.cn/gp/pro ...
- Linux命令行/终端连接(隐藏)SSID的WiFi
推荐看完Linux命令行/终端连接隐藏SSID的WiFi(续篇)和本文后,再按照实际情况采用network-manager或者ifupdown 多数Linux系统默认自带有线网络的驱动和配置软件,但是 ...
- java 实现N进制转M进制
1. 把10进制转成N进制:除N取余,逆序排列 这里逆序排列使用StringBuilder类的reverse()函数来实现. /** * 10进制整数转换为N进制整数. 10进制转换为N进制 ...
- Qt编写的项目作品31-PDF阅读器(雨田哥作品)
一.功能特点 仿WPS界面. 预览PDF文件. 支持PDF预览放大.缩小. 支持目录预览查看. 支持目录点击跳转页查看. 支持页数指定跳转. 支持上一页.下一页.首页.尾页跳转. 支持鼠标拖拽滑动预览 ...
- [转]CFLAGS、CXXFLAGS、FFLAGS、FCFLAGS、LDFLAGS、LD_LIBRARY_PATH区别
CFLAGS.CXXFLAGS.FFLAGS.FCFLAGS.LDFLAGS.LD_LIBRARY_PATH区别 Linux笔记之LD_LIBRARY_PATH详解 翻译 搜索 复制
- 百万架构师的第二课:设计模式:Spring 源码版本命名规则及下载安装
第二章--SpringWeb应用开发篇 二.Spring 源码版本命名规则及下载安装 2.1.Spring源码版本命名规则 (1) 首先看看某些常见软件的版本号: Linux Kernel: 0.0. ...
- JVM实战—9.线上FGC的几种案例
大纲 1.如何优化每秒十万QPS的社交APP的JVM性能(增加S区大小 + 优化内存碎片) 2.如何对垂直电商APP后台系统的FGC进行深度优化(定制JVM参数模版) 3.不合理设置JVM参数可能导致 ...
- 基于AT89C51的数字时钟课程设计
摘要:单片微型计算机简称单片机,又称为微控制器,是将CPU.RAM.ROM.定时/计数器.I/O接口电路集成到一块电路芯片上构成的微型计算机.本次设计的系统由单片机系统.数码管显示系统.键盘.蜂鸣器等 ...
- 前端学习openLayers配合vue3(简单的创建一个地图)
首先搭建一个vue工程化环境,首先我们先来创建一个地图吧 首先我们需要下载 npm i ol 其次我们需要在main.js里面引入相关的css import 'ol/ol.css' 到现在我们就可以开 ...