2023/7/18 · 非关系型数据库Redis

2023/7/18 · 非关系型数据库Redis

1·Redis简介

Redis 是一个开源的 key-value 数据库,属于NoSQL数据库,按照键值对的结构对数据进行存储。

  1. string类型的 设置set 获取get 删除del
本机ip:6379> set 1 dingzhen
OK			//添加成功
本机ip:6379> get 1
"dingzhen"	//获取值
本机ip:6379> del 1
(integer) 1	 //删除返回影响记录数量
本机ip:6379>
  1. hash类型 设置hset 获取hget 删除hdel
本机ip:6379> hset 2 a dingzhen	//设置键、属性名、属性
(integer) 1
本机ip:6379> hget 2 a
"dingzhen"
本机ip:6379> hdel 2 a
(integer) 1
本机ip:6379>
  1. list类型 左插lpush 右插rpush 范围获取lrange 左删lpop 右删rpop
本机ip:6379> lpush 3 a b c	
(integer) 3
本机ip:6379> lrange 3 0 -1	//从0开始,-1表示末尾
1) "c"
2) "b"
3) "a"
本机ip:6379> rpush 3 d e f
(integer) 6
本机ip:6379> lrange 3 0 -1
1) "c"
2) "b"
3) "a"
4) "d"
5) "e"
6) "f"
本机ip:6379> lpop 3
"c"
本机ip:6379> lrange 3 0 -1
1) "b"
2) "a"
3) "d"
4) "e"
5) "f"
本机ip:6379>
  1. set类型(无序) 添加sadd 全部获得smembers 删除指定元素srem
本机ip:6379> sadd 4 x y z
(integer) 3
本机ip:6379> smembers 4
1) "y"
2) "z"
3) "x"
本机ip:6379> srem 4 y
(integer) 1
本机ip:6379> smembers 4
1) "z"
2) "x"
本机ip:6379>

2·Java连接Redis

要在Java中连接redis,需要在web项目中导入jedis的jar包。
在这里插入图图片描述
然后直接把jedis对象实例化,构造器参数填上本机ip和redis的端口号

public class Test {
    public static void main(String[] args) {
        //1.创建Jedis连接 Java+Redis
        Jedis jedis = new Jedis("本机ip", 6379);	//6739为redis默认端口号
        jedis.set("dingzhen", "理塘丁真");
        System.out.println(jedis.get("dingzhen"));
        //控制台:
        //理塘丁真
     }
}     

对象转json存入redis,这里用到了阿里巴巴的fastjson包,用于json串的快速转换。

        //对象转json存入redis
        Student stu1 = new Student(1, "丁真", 20, "男");
        String jsonStu1 = JSON.toJSONString(stu1);	//转换为json字符串
        jedis.set("stu1", jsonStu1);
        String result = jedis.get("stu1");		//获取json字符串
        Student newStu1 = JSON.parseObject(result, Student.class);  //将json串转换为对象,参数为json串和该对象类型的Class实例
        System.out.println(newStu1.getSname());	//获取对象的属性
        //丁真

对象数组转json存入redis,和对象转json一样,只不过用到了不同的转换方法。

        //对象数组转json存入redis
        List<Student> list = new ArrayList<Student>();
        Student stu1 = new Student(1, "丁真", 20, "男");
        Student stu2 = new Student(2, "王源", 20, "男");
        list.add(stu1);
        list.add(stu2);
        String jsonStr = JSON.toJSONString(list);
        jedis.set("list", jsonStr);
        String result = jedis.get("list");
        List<Student> newList = JSON.parseArray(result, Student.class);
        System.out.println(newList.get(0).getSname());
        System.out.println(newList.get(1).getSname());
        //丁真
		//王源

3·Jedis用于缓存的示例

简单创建了一个分层开发的web项目,web包和上面一样。
![在这里插入图片描述](https://img-blog.csdnimg.cn/8f66cce7715b449a868a2d9cf7bb9d62.png

这是servlet中的代码。

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        StudentService ss = new StudentServiceImpl();
        Jedis jedis = new Jedis("本机ip", 6379);
        List<Student> list = null;
        if (jedis.get("list") == null || "".equals(jedis.get("list"))) {
            list = ss.getAll();
            jedis.set("list", JSON.toJSONString(list));
            System.out.println("从数据库");
        } else {
            String str = jedis.get("list");
            list = JSON.parseArray(str, Student.class);
            System.out.println("从缓存");
        }
        req.getSession().setAttribute("list", list);
        resp.sendRedirect("index.jsp");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值