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
        }
    }
    
    
  • 相关阅读:
    关联接口,依赖接口的用法
    通过requests发送不同请求格式的数据
    requests请求数据参数化配置
    requests模块中通用的请求方法,即requests.request
    预期方向需要动态调整
    红枣大幅低开高开
    大涨大跌判断风向
    开盘大幅拉升回落
    红枣变盘之前的预测
    开盘情况要稳定才能进,不看看一根线
  • 原文地址:https://www.cnblogs.com/train99999/p/11047772.html
Copyright © 2011-2022 走看看