学习笔记【JavaWeb-第十五节:redis快速入门】

Redis

redis是一款高性能的NOSQL系列的非关系型数据库

redis.windows.conf:redis的配置文件
redis-cli.exe:redis的客户端
redis-server.exe:redis的服务器端

命令操作:

redis的数据结构
redis存储的是key,value格式的数据,其中key为字符串,value有5种不同的数据结构

value的数据结构:

  • 1.字符串类型String
  • 2.哈希类型hash:map格式
  • 3.列表类型list
  • 4.集合类型set
  • 5.有序集合类型sortedset

1.字符串类型String

存储:set key value
获取:get key
删除:del key

2.哈希类型 hash

存储:

  • hset key field value

获取:

  • hget key field获取对应的值,
  • hgetall key获取所有值

删除:

  • hdel key field

3.列表类型list

添加:

  • lpush key value:将元素加入列表左边
  • rpush key value:将元素加入列表右边

获取:

  • lrange key start end:范围获取

删除

  • lpop key:删除列表最终左边的元素,并将元素返回
  • rpop key:删除列表最终右边的元素,并将元素返回

4.集合类型 set :

不允许重复元素,无序

存储:sadd key value
获取:smembers key:获取set集合中所有元素
删除:srem key value:删除set中某个元素

5.有序集合类型 sortedset

不允许重复元素,且元素有顺序
存储:zaa key score value
获取:zrange key start end
删除:zrem key value

通用命令

keys * :查询所有的键
type key:获取键对应的value的类型
del key:删除指定的key value


持久化

redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中

redis持久化即使

RDB:默认方式

不需要进行配置,默认就是用这种机制
在一定的间隔事件中,检测key的变化情况,然后去持久化数据
步骤

  • 编辑redis.windows.conf文件
    save 900 1(900秒,也就是15分中后,一个改变则持久化一次)
    save 300 10
    save 60 10000
  • 重启redis服务器,并指定配置文件名称(redis-server.exe redis.windows.conf)
AOF:日志记录的方式

可以记录每一条命令的操作。可以每一次命令操作时,持久化
步骤

  • 编辑redis.windows.conf文件
    appendonly no(关闭aof)—>appendonly yes(开启aof)
    #appendfsync always :每一次操作都进行持久化
    appendfsync everysec:每隔一秒进行一次持久化
    #appendfsync no:不进行持久化

Jedis

一款java操作redis数据库的工具。

使用步骤:

  • 下载jedis的jar包
  • 使用:
    • 获取连接(若使用空参,默认为"localhost",6379端口)
    • 操作
    • 关闭连接
//获取连接
Jedis jedis=new Jedis("localhost",6379);
//操作
jedis.set("username","zhangsan");
//关闭连接
jedis.close();

可以使用setex()方法存储指定过期事件的key value

//将activecode:hehe键值对存入redis,并且20秒后自动删除改键值对
jedis.setex("activecode",20,"hehe");

jedis连接池:JedisPool

使用:

  • 创建JedisPool连接池对象
  • 调用getResource()方法获取jedis的连接
public void test07(){
    JedisPoolConfig config=new JedisPoolConfig();
    config.setMaxTotal(50);
    config.setMaxIdle(10);
    
    JedisPool jedisPool=new JedisPool(config);
    Jedis jedis = jedisPool.getResource();
    
    jedis.close();
}

config可设参数

  • maxIdle :连接池中最大的空闲连接数,默认为 8。
  • minIdle:连接池中最少空闲连接数,默认为 0。
  • maxTotal:连接池中最大连接数,默认为 8。
  • maxWaitMillis:当连接池资源用尽后,调用者的最大等待时间(单位为毫秒),一般不建议使用默认值,该默认值为-1,表示永远不超时,一直等待。
  • testOnBorrow:向连接池借用连接时是否做连接有效性检测(ping),无效连接会被移除,每次借用多执行一次 ping 命令,默认值为 false。
  • testOnReturn:向连接池归还连接时是否做连接有效性检测(ping),无效连接会被移除,每次归还多执行一次 ping 命令,默认值为 false。
  • testOWhileIdle:向连接池借用连接时是否做连接空闲检测,空闲超时的连接会被移除,默认值为 false。
  • blockWhenExhausted:当连接池用尽后,调用者是否要等待,这个参数是和 maxWaitMillis 对应的,只有当此参数为 true 时,maxWaitMillis 才会生效。默认值为 true。
  • minEvictableIdleTimeMillis:连接的最小空闲时间,达到此值后空闲连接将被移除,默认值 30 分钟。
  • timeBetweenEvictionRunsMillis:空闲连接的检测周期(单位为毫秒),默认值为 -1,表示不做检测。
  • numTestsPerEvictionRun:做空闲连接检测时,每次的采样数,默认为 3。

Jedis工具类:

public class JedisPoolUtils {
    private static JedisPool jedisPool;

    static {
        Properties pro=new Properties();
        try {
            pro.load(JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        JedisPoolConfig config=new JedisPoolConfig();
        config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
        config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));

        jedisPool=new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
    }

    //获取连接方法
    public static Jedis getJedis(){
        return jedisPool.getResource();
    }
}

版权声明:本文为qq_53273362原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。