笔记-JavaWeb学习之旅19
Redis:redis是一款高性能的NOSQL系列的非关系型数据库
NOSQL: Not Only SQL ,意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型数据库
redis的数据及结构:
redis储存的是:Key,Value格式的数据,其中key都是字符串,value有5种不同的数据结构
value的数据结构:
1.字符串类型 string
存储方式:set key value
获取方式: get key
删除方式: del key
2.哈希类型 hash:相当于map格式
存储方式: hset key field value(hset myhash username lisi),(hset myhash password 123)
获取方式: hget key field(hget myhash username)
删除方式: hdel key field
3.列表类型 list :linkedlist格式,支持重复元素
存储方式:lpush key value:将元素加入列表左边 (rpush加入右边)
获取方式:lrange key start end :范围获取
删除方式:lpop key :删除列表左边元素(rpop删除列表右边优速)
3.集合类型 set :不允许重复元素
存储方式:sadd key value
获取方式:smembers key(获取所有元素)
删除方式:srem key value
4.有序集合类型 sortedset:不允许重复元素,且元素有顺序
存储方式:zadd key score value(每一个元素都关联一个score,按照score排序)
获取方式:zrange key start end [withscores](:查询所有元素,加上withscores会获取到分数)
删除方式:zrem key value
通用命令
1. keys * : 查询所有的键
2. type key : 获取键对应的value的类型
3. del key:删除指定的key value
持久化:redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘中,确保数据不会对视
redis持久化机制:
RDB:默认方式,不需要配置,默认使用
AOF:日志记录的方式,可以记录每一天命令的操作。
Java客户端 jedis
jedis:一款java操作redis数据库的工具
package com.data.jedis;
import com.data.util.JedisPoolUtils;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class TestJedis {
//字符串操作
@Test
public void test1(){
//获取连接
Jedis jedis = new Jedis("localhost",6379);
//2.存储操作
jedis.set("username","zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username);
//可以使用setex()方法储存可以指定过期时间
jedis.setex("activecode",20,"123");//20秒后自动删除该键
//关闭连接
jedis.close();
}
//hash数据结构操作
@Test
public void test2(){
//获取连接
Jedis jedis = new Jedis("localhost",6379);
//2.存储操作
jedis.hset("user","username","zhangsan");
jedis.hset("user","age","22");
jedis.hset("user","gender","male");
//获取
String user = jedis.hget("user","username");
System.out.println(user);
Map<String,String> map = jedis.hgetAll("user");
Set<String> keys = map.keySet();
for(String key :keys){
System.out.print(key);
String value = map.get(key);
System.out.println(":"+value);
}
//关闭连接
jedis.close();
}
//List集合结构
@Test
public void test3(){
//获取连接
Jedis jedis = new Jedis("localhost",6379);
//2.存储操作
jedis.lpush("username","a","b","c");//cba
jedis.rpush("username","a","b","c");//abc
//弹出
String lpop1 = jedis.lpop("username");//c
String rpop1 = jedis.rpop("username");//c
System.out.println(lpop1);//c
System.out.println(rpop1);//c
// //范围获取
List<String> list = jedis.lrange("username",0,-1);
System.out.println(list);
//关闭连接
jedis.close();
}
//set集合
@Test
public void test4(){
//获取连接
Jedis jedis = new Jedis("localhost",6379);
//2.存储操作
jedis.sadd("myset","a","b","c","c");//不可以重复
//获取
Set<String> myset = jedis.smembers("myset");
System.out.println(myset);
//关闭连接
jedis.close();
}
//sortedset集合
@Test
public void test5(){
//获取连接
Jedis jedis = new Jedis("localhost",6379);
//2.存储操作
jedis.zadd("mysorteset",50,"张三");
jedis.zadd("mysorteset",30,"李四");
jedis.zadd("mysorteset",40,"王五");
//获取
Set<String> mysorteset = jedis.zrange("mysorteset",0,-1);
System.out.println(mysorteset);
//关闭连接
jedis.close();
}
//使用连接池
@Test
public void test6(){
//配置连接对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(50);
//创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
//获取连接
Jedis jedis = jedisPool.getResource();
//存储数据
jedis.set("hehe","heihei");
//获取数据
String s = jedis.get("hehe");
System.out.println(s);
jedis.close();
}
@Test
public void test7(){
Jedis jedis = JedisPoolUtils.getJedis();
jedis.set("hello","world");
String s = jedis.get("hello");
System.out.println(s);
jedis.close();
}
}
配置jedis连接池工具类
package com.data.util;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class JedisPoolUtils {
private static JedisPool jedisPool;//定义连接池对象
//定义配置文件
static{
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
Properties pro = new Properties();
try {
pro.load(is);//把配置加载进入内存
} catch (IOException e) {
}
//获取参数,并且设置配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));//参数需要int类型,传递进来的是字符串,需要转型
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
//初始化JedisPool
jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
}
//创建jedisPool工具类
public static Jedis getJedis(){
return jedisPool.getResource();//该方法返回Jedis
}
}
笔记-JavaWeb学习之旅19的更多相关文章
- 笔记-JavaWeb学习之旅5
CP30的演示 package cn.itcast.datasourcejdbc; import com.mchange.v2.c3p0.ComboPooledDataSource; import j ...
- 笔记-JavaWeb学习之旅7
JavaScript基础 概念:一门客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎,是一个脚本语言,不需要编译,直接就可以被浏览器解析执行. JavaScript ...
- 笔记-JavaWeb学习之旅18
AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...
- 笔记-JavaWeb学习之旅17
1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...
- 笔记-JavaWeb学习之旅16
增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...
- 笔记-JavaWeb学习之旅15
Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...
- 笔记-JavaWeb学习之旅14
JSTL:JavaServer Pages Tag Library JSP标准标签库 if标签 <%@ page import="java.util.ArrayList" % ...
- 笔记-JavaWeb学习之旅10
Servlet server applet运行在服务器端的小程序,servlet就是一个接口,定义了Java类被浏览器访问到的规则(Java类重写这个接口,就可以被浏览器(tomcat)识别) Ser ...
- 笔记-JavaWeb学习之旅13
验证码案列 昨天晚上出现的500错误原因在于验证码没有获取到,获取验证码是应该获取的是共享域中的验证码,而我把获取值得键给写成了jsp中的键,而不是内存生成图片中,然后把图片上传到共享域中的键.这两个 ...
随机推荐
- IDEA:Application Server was not connected before run configuration stop, reason: Unable to ping 1099
原文链接 : http://blog.csdn.net/x6582026/article/details/70807269 最近第一次玩IDEA时碰到tomcat启动问题:Application Se ...
- LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式 的解决方法
一.案例1,及解决方案: "LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式." ...
- riverbed 流量分析——还是在基于流量做运维
from:https://www.riverbed.com/sg/digital-performance/index.htmlMaximise Your Digital PerformanceConn ...
- SpringMVC框架<mvc:default-servlet-handler/>的作用
1.创建一个新工程 Eclipse下新建一个web项目,File>New>Dynamic Web Project 2.添加Jar包 3.配置Web.xml 4.配置 ...
- swift的arc 是不是有问题?
class Arctest { let name: String = "Arctest" @lazy var ret:() -> String? = { [weak self ...
- Sysctl命令及linux内核参数调整
一.Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现. 命令格式: sysctl [-n ...
- HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)
描述 给一个整数N,请你求出以N为分母的最简(既约)真分数中第K小的是多少? 输入 两个整数N个K. 对于30%的数据,1 <= N <= 1000000 对于100%的数据,1 < ...
- 描述怎样通过flask+redis+sqlalchemy等工具,开发restful api
flask开发restful api系列(8)-再谈项目结构 摘要: 进一步介绍flask的项目结构,使整个项目结构一目了然.阅读全文 posted @ 2016-06-06 13:54 月儿弯弯02 ...
- java面试题汇总(1)
1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组.我的意思是,如果改变引用指向的数组, 将会受到 v ...
- java面向对象的三大特性
1.面向对象的三大特性 继承.封装.多态 什么是继承? ①继承是面向对象程序设计能够提高软件开发效率的重要原因之一. ②继承是具有传递性的,就像现实中孙子不仅长得像爸爸而且还像他爷爷. ③继承来的属性 ...