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. mvc Bundling 学习记录(一)

    参考博客:http://www.cnblogs.com/xwgli/p/3296809.html 这里要详细记录的是对于现有MVC项目进行Bundling功能 1  如果没有System.Web.Op ...

  2. linux系统调用mount全过程分析【转】

    本文转载自:https://blog.csdn.net/skyflying2012/article/details/9748133 系统调用本身是软中断,使用系统调用,内核也陷入内核态,异常处理,找到 ...

  3. 转载:SPFA算法学习

    转载地址:http://www.cnblogs.com/scau20110726/archive/2012/11/18/2776124.html 粗略讲讲SPFA算法的原理,SPFA算法是1994年西 ...

  4. POJ3415 Common Substrings —— 后缀数组 + 单调栈 公共子串个数

    题目链接:https://vjudge.net/problem/POJ-3415 Common Substrings Time Limit: 5000MS   Memory Limit: 65536K ...

  5. nginx+keepalived简单双机主从热备

    双机主从热备概述 可以两台机子互为热备,平时各自负责各自的服务.在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续 ...

  6. 脚本简介jQuery微信开放平台注册表单

    脚本简介jQuery微信开放平台注册表单是一款仿微信开放平台的选项卡带步骤的注册表单验证jQuery代码 分享自:http://www.huiyi8.com/jiaoben/ 下载地址:http:// ...

  7. php设计模式课程---5、责任链模式是什么

    php设计模式课程---5.责任链模式是什么 一.总结 一句话总结: 自己权限不够,就交给上级处理 1.选择结构怎么做到面向对象开闭原则? 也就是说if,都可以用接口的实现来实现,这样就避免了更新的时 ...

  8. 分享知识-快乐自己:论Hibernate中的缓存机制

    Hibernate缓存 缓存: 是计算机领域的概念,它介于应用程序和永久性数据存储源之间. 缓存: 一般人的理解是在内存中的一块空间,可以将二级缓存配置到硬盘.用白话来说,就是一个存储数据的容器.我们 ...

  9. string类封装

    class cMyString{ char* m_str; int m_strSize;public: cMyString();//指针指向一个空字符串 cMyString(char* str);// ...

  10. suse enterprise Linux 11上配置 oracle11g和tomcat开机自启动

    一.oracle 11g r2自启动 1.修改/etc/sysconfig/oracle文件: ORACLE_BASE=/oracle  //此处改为你安装的oracle目录 START_ORACLE ...