zoukankan      html  css  js  c++  java
  • 笔记-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
        }
    }
    
    
  • 相关阅读:
    HDU4366 Successor 线段树+预处理
    POJ2823 Sliding Window 单调队列
    HDU寻找最大值 递推求连续区间
    UVA846 Steps 二分查找
    HDU3415 Max Sum of MaxKsubsequence 单调队列
    HDU时间挑战 树状数组
    UVA10168 Summation of Four Primes 哥德巴赫猜想
    UESTC我要长高 DP优化
    HDUChess 递推
    HDU4362 Dragon Ball DP+优化
  • 原文地址:https://www.cnblogs.com/train99999/p/11047772.html
Copyright © 2011-2022 走看看