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. 关于SQL语句参数中为多个带‘,’的字符串

    案例分析:画面为多分数选项,根据画面选择的分数组合=@分数,以SELECT * FROM [table_name] WHERE sore IN (@分数) 其实这不算一个复杂的问题,可能由于着急下班, ...

  2. ping: sendto: Network is unreachable【转】

    本文转载自:http://blog.sina.com.cn/s/blog_640531380102wmzb.html 在我的板子上ping路由上的IP的时候可以ping通,但是ping外网的IP的时候 ...

  3. hihocoder 微软编程之美2015 初赛 第二场(暴力+字典序+图论+思维算法)

    题目1 : 扑克牌 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 一副不含王的扑克牌由52张牌组成,由红桃.黑桃.梅花.方块4组牌组成,每组13张不同的面值.现在给定52 ...

  4. POJ题目算法分类总结博客地址

    http://blog.csdn.net/sunbaigui/article/details/4421705 又从这个地址找了一些:http://blog.csdn.net/koudaidai/art ...

  5. ubuntu 14.4 下 普通sudo无密码

    用户是test,要设置为 sudo无密码 visudo 最后一行 加上: %test  ALL=NOPASSWD:ALL 然后  ctrl + x 进行保存,会提示 Y or  N,输入 y 即可. ...

  6. 使用libcurl,根据url下载对应html页面

    1. [图片] Capture.JPG ​2. [代码]GetPageByURL //static member variable definestring GetPageByURL::m_curPa ...

  7. BZOJ 1231 [Usaco2008 Nov]mixup2 混乱的奶牛:状压dp + 滚动数组

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1231 题意: 给你n个数字s[i],问你有多少个排列,使得任意相邻两数字之差的绝对值大于m ...

  8. 分享知识-快乐自己:Hibernate中的 quert.list() 与 quert.iterate() 方法区别

    区别如下: quert.list() : 1):每次都是通过一条语句直接操作数据库取出所有的数据返回(并且将对象存入hibernate缓存中): 2):不会从一二级缓存中查询数据: 3):之执行一条S ...

  9. (转)MongoDB和Redis区别

    简介 MongoDB更类似Mysql,支持字段索引.游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务. Mysql在大数据量时效率显著下降,MongoDB更多 ...

  10. MySQL-with rollup函数运用 _20160930

    在博客里http://www.cnblogs.com/Mr-Cxy/p/5898839.html提到了行转列, 如果想在下面这个表下面添加一行 总计 数据行SQL代码怎么实现 并且根据9月金额进行城市 ...