Jedis入门

8 篇文章 0 订阅
3 篇文章 0 订阅

Jedis是Java开发Redis的语言工具包

Jedis是对Redis语言的封装

Jedis演示

Jedis jedis = new Jedis("175.27.230.117", 6379);
        try {
            jedis.auth("12345");
            jedis.select(2);
            System.out.println("Redis连接成功");

            // String类型
            jedis.set("sn", "7781-9938");
            String sn = jedis.get("sn");
            System.out.println(sn);

            jedis.mset(new String[]{"title", "奶粉", "num", "20"});
            List<String> goods = jedis.mget(new String[]{"sn", "title", "num"});
            System.out.println(goods);
            Long num = jedis.incr("num");
            System.out.println(num);

            //HASH 类型
            jedis.hset("student:3312", "name", "张晓明");
            String name = jedis.hget("student:3312", "name");
            System.out.println(name);
            Map<String, String> studentMap = new HashMap<>();
            studentMap.put("name", "李兰");
            studentMap.put("age", "18");
            jedis.hmset("student:3313", studentMap);
            Map<String, String> smap = jedis.hgetAll("student:3313");
            System.out.println(smap);

            // List类型
            jedis.del("letter");
            jedis.rpush("letter", new String[]{"d", "e", "f"});
            jedis.lpush("letter", new String[]{"c", "b", "a"});
            List<String> letter = jedis.lrange("letter", 0, -1);
            System.out.println(letter);
            jedis.lpop("letter");
            jedis.rpop("letter");
            letter = jedis.lrange("letter", 0, -1);
            System.out.println(letter);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jedis.close();
        }

输出结果:

 Redis持久化策略

Redis持久化策略,他会把数据化持久化到磁盘上,当启动Redis后可以从磁盘将数据加载到内存中,然后在内存中读取数据,实现Redis持久化策略有两种方式:

  • RDB(数据快照模式),定期存储,保存的是数据本身,存储文件是紧凑的。当服务器启动的时候,可以从RDB文件中恢复数据集。
  • AOF(追加模式),每次修改数据是,同步到硬盘(写操作日志),保存的是数据的变更记录。在服务器重新启动的时候,会把所有的写操作重新执行一边,从而实现数据备份。当写操作数据集过大(比原有的数据集还大),Redis会重写写操作集。

ZRANGE和ZRANGEBYSCORE的区别

  • ZRANGE的语法是ZRANGE key start stop [WITHSCORES], 表示返回有续集和key中指定区间的成员。比如:返回指定范围中的成员,如图:

  • ZRANGEBYSCORE的语法是ZRANGEBYSCORE key min max, 表示返回有续集key中,所有score值介于min和max之间(包括等于min或max)的成员。例如:查看score值在100到103之间的元素: 

MySQL和Redis的使用场景

  •  Reids作为一个内存数据库,读取写入速度是非常快的,所以经常被用来存储数据、页面等的缓存的内容。

  • MySQL如果每次提取都要读取MySQL存储在磁盘的数据,比较慢。如:在需要读取大量数据时(获得大量帖子或新闻),就可以使用Redis读取到数据。在内存中,Redis将MySQL中的数据获取到,然后之间从Redis读取数据,效率比较快.
  • 综上:MySQL和Redis在处理大量读取数据操作时,一般是配合使用。MySQL是将数据放在磁盘中,Redis是将数据放在内存中,便于快速读取.

Redis做缓存举例:

package com.imooc.jedis;

import com.alibaba.fastjson.JSON;
import redis.clients.jedis.Jedis;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class CacheSample {
    public CacheSample() {
        List<Goods> goodsList = new ArrayList<Goods>();
        goodsList.add(new Goods(8818, "红富士苹果", "", 3.5f));
        goodsList.add(new Goods(8819, "进口脐橙", "", 5f));
        goodsList.add(new Goods(8820, "香蕉", "", 25f));
        Jedis jedis = new Jedis("175.27.230.117", 6379);

        try {
            jedis.auth("12345");
            jedis.select(3);

            for (Goods goods : goodsList) {
                String json = JSON.toJSONString(goods);
                System.out.println(json);
                String key = "goods:" + goods.getGoodsId();
                jedis.set(key, json);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jedis.close();
        }
    }

    public static void main(String[] args) {
        new CacheSample();
        System.out.println("请输入要查询的商品编号:");
        String goodsId = new Scanner(System.in).next();
        Jedis jedis = new Jedis("175.27.230.117", 6379);
        try {
            jedis.auth("12345");
            jedis.select(3);
            String key = "goods:" + goodsId;
            if (jedis.exists(key)) {
                String json = jedis.get(key);
                System.out.println(json);
                Goods g = JSON.parseObject(json, Goods.class);
                System.out.println(g.getGoodsName());
                System.out.println(g.getPrice());
            } else {
                System.out.println("您输入的商品编号不存在,请重新输入!");
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            jedis.close();
        }
    }
    /**
     * 存在内存中,内存读取数独远远大于硬盘读取速度
     * 缓存特性:数据不能太大, 更新频率低
     */
}

结果查询:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋同学shl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值