笔记-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中的键,而不是内存生成图片中,然后把图片上传到共享域中的键.这两个 ...
随机推荐
- leetcode 859. Buddy Strings
Given two strings A and B of lowercase letters, return true if and only if we can swap two letters i ...
- SQL Server 2008R2 代理服务-开启
,点击开始菜单-所有程序-SQLServer2008R2-配置工具-SQLServer配置管理器 2,选择SQLServer服务 3,找到SqlServer代理(MSSQLSERVER),双击或右键选 ...
- blog首页视图
声明:此Django分类下的教程是追梦人物所有,地址http://www.jianshu.com/u/f0c09f959299,本人写在此只是为了巩固复习使用 django 是如何处理 http 请求 ...
- 草原psd素材
草原PSD素材,草原,风景,蓝天白云,飞鸟,阳光,绿色,草地. http://www.huiyi8.com/caoyuan/psd/
- COM对象创建过程
在客户端需要调用COM组件时,通常调用windowAPI函数: STDAPI CoCreateInstance( REFCLSID rclsid, //创建的Com对象的类标识符(CLSID) LPU ...
- Android Studio的技巧
1.快速添加add unimplements methods: 右键generate 2.快速添加try-catch:左边就有一个小电灯,然后可以选. 3.格式化OPTION + CMD + L ( ...
- jQuery精华
第一章:入门 选择元素: $() css() $("li").css():可以省略原生的循环操作 $ == jQuery jQuery方法函数化: click() html() J ...
- P2743(poj1743) Musical Themes[差分+后缀数组]
P2743 乐曲主题Musical Themes(poj1743) 然后呢这题思路其实还是蛮简单的,只是细节特别多比较恶心,忘记了差分带来的若干疏漏.因为转调的话要保证找到相同主题,只要保证一段内相对 ...
- RabbitMQ的持久化机制
一.问题的引出 RabbitMQ的一大特色是消息的可靠性,那么它是如何保证消息可靠性的呢?——消息持久化.为了保证RabbitMQ在退出,服务重启或者crash等异常情况下,也不会丢失消息,我们可以将 ...
- MySQL5.6中新增特性、不推荐使用的功能以及废弃的功能
虽然已经使用MySQL5.6版本有一段时间了,但由于没有和之前的版本作过详细比较,所以对于哪些重要的或者不太重要的特性是在新版本中引入的,还有哪些特性已经或者将要从旧版本中移除的并没有一个十分全面的了 ...