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的更多相关文章

  1. 笔记-JavaWeb学习之旅5

    CP30的演示 package cn.itcast.datasourcejdbc; import com.mchange.v2.c3p0.ComboPooledDataSource; import j ...

  2. 笔记-JavaWeb学习之旅7

    JavaScript基础 概念:一门客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎,是一个脚本语言,不需要编译,直接就可以被浏览器解析执行. JavaScript ...

  3. 笔记-JavaWeb学习之旅18

    AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...

  4. 笔记-JavaWeb学习之旅17

    1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...

  5. 笔记-JavaWeb学习之旅16

    增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...

  6. 笔记-JavaWeb学习之旅15

    Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...

  7. 笔记-JavaWeb学习之旅14

    JSTL:JavaServer Pages Tag Library JSP标准标签库 if标签 <%@ page import="java.util.ArrayList" % ...

  8. 笔记-JavaWeb学习之旅10

    Servlet server applet运行在服务器端的小程序,servlet就是一个接口,定义了Java类被浏览器访问到的规则(Java类重写这个接口,就可以被浏览器(tomcat)识别) Ser ...

  9. 笔记-JavaWeb学习之旅13

    验证码案列 昨天晚上出现的500错误原因在于验证码没有获取到,获取验证码是应该获取的是共享域中的验证码,而我把获取值得键给写成了jsp中的键,而不是内存生成图片中,然后把图片上传到共享域中的键.这两个 ...

随机推荐

  1. Zookeeper四字命令

    ZooKeeper 支持某些特定的四字命令(The Four Letter Words)与其进行交互.它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息.用户在客户端可以通过 ...

  2. SQL语句性能优化操作

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引. 2.应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应 ...

  3. 自定义编辑框VC,可加载更改字体,添加背景图片,显示输入提示信息

    搞了一天终于弄了个完整的编辑框控件出来了, 哎,,,搞界面开发还是有点复杂的. #pragma once #include "AdvEdit.h" // CBkgEditBox c ...

  4. HDU4511 小明系列故事——女友的考验 —— AC自动机 + DP

    题目链接:https://vjudge.net/problem/HDU-4511 小明系列故事——女友的考验 Time Limit: 500/200 MS (Java/Others)    Memor ...

  5. Contiki-Timer 概述

    Contiki有一个clock模块和一系列timer模块:timer,stimer,ctimer,etimer,和rtimer. 一.clock模块 clock模块提供一些处理系统时间的函数,还有一些 ...

  6. ThinkPHP基础(1)

    多层MVC模式 M:Model 数据模型层,负责数据操作 V:View 视图层,负责显示视图 C:Controller 控制器,实现业务逻辑 控制器访问及路由解析 通过url地址get参数找到指定的控 ...

  7. HDU 1850 Being a Good Boy in Spring Festival(博弈·Nim游戏)

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  8. Speaking 1

    What clothes do you usually like to wear?Well I like fashionable clothes, but I also want to be comf ...

  9. div img 垂直水平居中

    <style> div { width: 600px; height: 578px; text-align: center; display: table-cell; vertical-a ...

  10. mac laravel 环境变量设置bash_profile

    mac laravel 环境变量设置bash_profile >>>vim ~/.bash_profile '''text export PATH=$PATH:~/.composer ...