当前位置: 移动技术网 > IT编程>开发语言>Java > 笔记-JavaWeb学习之旅19

笔记-JavaWeb学习之旅19

2019年06月19日  | 移动技术网IT编程  | 我要评论
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
    }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网