Redis入门学习命令持久化Jedis入门学习jedis连接池代码示例

Redis概念

  • redis是一款高性能的NOSQL(not only sql)系列的非关系型数据库
  • 数据存储在内存中
  • 读写速度很快
关系型和非关系型数据库比较

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FIBXknWb-1572009950516)(./images/1.关系型和非关系型数据库比较.bmp)]

下载安装
  • 官网:https://redis.io
  • 中文网:http://www.redis.net.cn
  • 解压直接使用
    • redis.windows.conf:配置文件
    • redis-cli.exe:redis的客户端
    • redis-server.exe:redis服务器端

命令操作

redis数据结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T8YuDccJ-1572009950519)(./images/2.redis数据结构.bmp)]

  • redis存储的是:key,value格式的数据,其中key都是字符串,value有五种不同的数据结构
  • 五种数据结构
    • 字符串类型 string
    • 哈希类型 hash :map格式
    • 列表类型 list(允许重复) :linkedlist格式
    • 集合类型 set
    • 有序集合类型 sortedset
  • 字符串类似 string
    • 存储:set key value
    • 获取:get key
    • 删除:del key
  • 哈希类型 hash :map格式
    • 存储:hset key field value
      • 例:hset myhash username zhangsan
    • 获取指定field下value:hget key field
    • 获取指定key下所有field和value:hgetall key
    • 删除:hdel key field
  • 列表类型 list(允许重复) :linkedlist格式
    • 可以添加一个元素到列表的头部或者尾部
    • 从左边添加元素:lpush key value
    • 从右边添加元素:rpush key value
    • 范围获取:lrange key start end (全部范围:0 -1)
    • 删除列表最左边的元素并返回:lpop key
    • 删除列表最右边的元素并返回:rpop key
  • 集合类型 set 不允许重复
    • 存储:sadd key value
    • 获取所有元素:smembers key
    • 删除:srem key value
  • 有序集合类型 sortedset 不允许重复切有序
    • 存储:zadd key score value
    • 获取(带上分数):zrange key start end (withscores)
    • 删除:zren key value
  • 通用命令
    • 查询所有键:keys *
    • 查询键对应的value的类型:type key
    • 删除指定的key value:del key

持久化操作

  • redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据会丢失。我们可以将redis内存中的数据持久化保存到文件中
  • redis持久化机制:
    • RDB:默认方式(不需要进行配置,默认使用这种机制)
      • 在一定的时间间隔中,检测key的变化情况,然后持久化数据
    • AOF:日志记录的方式
      • 可以记录每一条命令的操作。可以每一次命令操作后持久化数据
  • ROB使用步骤
    1. 编辑redis.windows.conf文件
      • save 900 1 表示 after 900 sec (15 min) if at least 1 key changed
      • save 300 10 表示 after 300 sec (5 min) if at least 10 keys changed
      • save 60 10000 表示 after 60 sec if at least 10000 keys changed
    2. 重新启动redis服务器并制定配置文件名称
      • redis-server.exe redis.windows.conf
  • AOF使用步骤
    1. 编辑redis.windows.conf文件
    2. 找到appendonly no改成appendonly yes
    3. 找到appendfsync everysec可以进行设置
      • appendfsync always :每一次操作都进行持久化
      • appendfsync everysec :每秒持久化一次(默认)
      • appendsfsync no :不持久化

Jedis

  • Jedis:一款java操作redis数据库的工具
  • 下载jar包可以使用
实例代码
public class JedisTest {

    /**
     * string 数据结构操作
     */
    @Test
    public void test2(){
        //1. 获取连接
        Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
        //2. 操作
        //存储
        jedis.set("username","zhangsan");
        //获取
        String username = jedis.get("username");
        //可以使用setex()方法存储可以指定过期时间的 key value
        jedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对

        // 存储hash
        jedis.hset("user","name","lisi");
        jedis.hset("user","age","23");
        jedis.hset("user","gender","female");
        // 获取hash
        String name = jedis.hget("user", "name");
        // 获取hash的所有map中的数据
        Map<String, String> user = jedis.hgetAll("user");

        // list 存储
        jedis.lpush("mylist","a","b","c");//从左边存
        jedis.rpush("mylist","a","b","c");//从右边存
        // list 范围获取
        List<String> mylist = jedis.lrange("mylist", 0, -1);
        // list 弹出
        String element1 = jedis.lpop("mylist");//c
        String element2 = jedis.rpop("mylist");//c

        // set 存储
        jedis.sadd("myset","java","php","c++");
        // set 获取
        Set<String> myset = jedis.smembers("myset");

        // sortedset 存储
        jedis.zadd("mysortedset",3,"亚瑟");
        jedis.zadd("mysortedset",30,"后裔");
        jedis.zadd("mysortedset",55,"孙悟空");
        // sortedset 获取
        Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);

        //3. 关闭连接
        jedis.close();
    }
}

Jedis连接池:JedisPool

  1. 创建一个配置对象
  2. 创建JedisPool连接池对象
  3. 获取连接
  4. 使用
  5. 关闭
//0.创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);
//1.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);//也可以直接默认构造
//2.获取连接
Jedis jedis = jedisPool.getResource();
//3. 使用
jedis.set("hehe","heihei");
//4. 关闭 归还到连接池中
jedis.close();;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值