Redis学习 - map类型

案例一
import redis.clients.jedis.Jedis;
import java.util.Map;

/**
 * redis 操作map
 */
public class RedisMain {
    public static void main(String[] args) throws Exception{
        Jedis jedis = new Jedis("127.0.0.1",6379);
        String response = jedis.ping();
        System.out.println(response);

        jedis.del("daxia:king");
        //创建一个对象
        jedis.hset("daxia:king","姓名","不为人知");
        jedis.hset("daxia:king","年龄","20");
        jedis.hset("daxia:king","技能","杀人于无形");

        //打印对象
        Map<String,String> map = jedis.hgetAll("daxia:king");
        System.out.println("大侠的基本信息:");
        for(Map.Entry entry : map.entrySet()){
            System.out.println(entry.getKey()+":-------"+entry.getValue());
        }

        System.out.println();

        //获取大侠的年龄,进行研究
        String age = jedis.hget("daxia:king","年龄");
        System.out.println("对大侠的年龄有质疑:"+age);
        //年龄增加十岁
        jedis.hincrBy("daxia:king","年龄",10);
        System.out.println("经过验核,大侠的实际年龄为:"+ jedis.hget("daxia:king","年龄"));

        System.out.println();

        //删除大侠的姓名
        jedis.hdel("daxia:king","姓名");
        for(Map.Entry entry : jedis.hgetAll("daxia:king").entrySet()){
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }
}

在这里插入图片描述

案例二

Product:

import java.math.BigDecimal;

public class Product {
    private String id;
    private String name;
    private BigDecimal price;
    private int num;

    public Product() {
    }

    public Product(String id, String name, BigDecimal price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    @Override
    public String toString() {
        return "Product{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", num=" + num +
                '}';
    }
}

Cart:

import com.google.gson.Gson;
import redis.clients.jedis.Jedis;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Cart {
    private Jedis jedis;


    public Cart() {
        jedis = new Jedis("127.0.0.1", 6379);
    }

    public Cart(Jedis jedis) {
        this.jedis = jedis;
    }

    /**
     * 修改购物车中的商品
     * @param userName
     * @param productId
     * @param num
     */
    public void updateProduct2Cart(String userName, String productId, int num) {
        jedis.hincrBy("shop-cart:" + userName, productId, num);
    }

    /*
     * 获取购物车中的商品信息
     * */
    public List<Product> getProductsByUserName(String userName) {
        List<Product> products = new ArrayList<Product>();
        Map<String, String> productMap = jedis.hgetAll("shop-cart:" + userName);
        if (productMap == null || productMap.size() == 0) {
            return products;
        }
        for (Map.Entry entry : productMap.entrySet()) {
            Product product = new Product();
            //获取用户购物车中的商品编号
            product.setId((String) entry.getKey());
            int num = Integer.parseInt((String) entry.getValue());
            product.setNum(num > 0 ? num : 0);
            complementOtherField(product);
            products.add(product);
        }

        return products;
    }

    private void complementOtherField(Product product) {
        String productId = product.getId();
        String productJsonStr = jedis.get("shop-product:" + productId);
        Product productJson = new Gson().fromJson(productJsonStr, Product.class);
        if (productJson != null) {
            product.setName(productJson.getName());
            product.setPrice(productJson.getPrice());
        }
    }

    public static void main(String[] args) {
        initData();
        Cart cart = new Cart();

        String userName = "Mike";

        //向购物车添加商品
        cart.updateProduct2Cart(userName, "3123918948914", 10);
        cart.updateProduct2Cart(userName, "5667261241411", 100);
        cart.updateProduct2Cart(userName, "9565613461134", -10);

        //打印当前用户的购物车信息
        List<Product> products = cart.getProductsByUserName(userName);
        for (Product product : products) {
            System.out.println(product);
        }
    }

    private static void initData() {
        System.out.println("*******  初始化商品信息 *********");
        Jedis jedis = new Jedis("127.0.0.1", 6379);

        Product product1 = new Product("3123918948914", "惠普(HP)24ES 23.8英寸 全高清IPS 纤薄机身 电脑屏幕 液晶显示器", new BigDecimal(166));
        Product product2 = new Product("5667261241411", "三星(SAMSUNG)27英寸 1800R曲面旗舰窄边框 HDMI/DP高清接口 电脑显示器", new BigDecimal(99));
        Product product3 = new Product("9565613461134", "戴尔(DELL) U2417H 23.8英寸四边微边框旋转升降IPS屏", new BigDecimal(500));

        /*
         * 数据写入 redis
         * */
        jedis.set("shop-product:" + product1.getId(), new Gson().toJson(product1));
        jedis.set("shop-product:" + product2.getId(), new Gson().toJson(product2));
        jedis.set("shop-product:" + product3.getId(), new Gson().toJson(product3));

        /*
         * 打印所有产品信息
         * */
        Set<String> allProductKeys = jedis.keys("shop-product:*");
        for (String key : allProductKeys) {
            String json = jedis.get(key);
            Product product = new Gson().fromJson(json, Product.class);
            System.out.println(product);
        }

        System.out.println("===================用户购物车信息如下=================");

    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值