Java--Redis学习(1)

Redis简介

**Remote Dictionary Server(Redis)是一个开源的使用 ANSIhttps://baike.baidu.com/item/C%E8%AF%AD%E8%A8%80C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。** redis 可以实现对数据的高速存储和读取

接下来介绍对Redis中几种常用类型的操作:

string类型(1)增删操作

package com.xmaven.test;

import redis.clients.jedis.Jedis;

public class TestString {

    public static void main(String[] args) {
        Jedis j = new Jedis("127.0.0.1",6379);
        System.out.println("连接成功");
        
        j.set("name", "张三");                //添加键值
        System.out.println(j.get("name"));    //根据键取值
        
        j.append("name", " 你好");            //追加
        System.out.println(j.get("name"));
        
        j.del("name");                        //删除
        System.out.println(j.get("name"));
        j.close();
    }

}

string类型(2)自增自减操作

package com.xmaven.test;

import redis.clients.jedis.Jedis;

public class TestString1 {

    public static void main(String[] args) {
        Jedis j = new Jedis("127.0.0.1",6379);
        System.out.println("连接成功");
        
        j.set("num", "1");
        
        
        j.incr("num");                        //值自增1
        j.incrBy("num", 5);                    //值自增5
        System.out.println(j.get("num"));
        
        j.set("num", "1");
        j.decr("num");                        //值自减1
        j.decrBy("num", 5);                    //值自减5
        System.out.println(j.get("num"));
        
        j.close();
    }

}

string类型(3)对多个数据的存取操作

package com.xmaven.test;

import java.util.List;

import redis.clients.jedis.Jedis;

public class TestString2 {

    public static void main(String[] args) {
        Jedis j = new Jedis("127.0.0.1",6379);
        System.out.println("连接成功");
        
        j.mset("name","zhangsan","sex","nan","age","21");    //一次存多个值
        
        List<String> list = j.mget("name","sex","age");        //一次取多个值
        
        for (String s : list) {
            System.out.println(s);
        }
        
        j.close();
    }

}

hash类型数据操作

package com.xmaven.test;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class TestHash {

    public static void main(String[] args) {
        Jedis j = new Jedis("127.0.0.1",6379);
        System.out.println("连接成功");
        
        //存储数据
        j.hset("stu", "name", "tom");
        j.hset("stu", "sex", "male");
        j.hset("stu", "age", "22");
        
        //获取某个属性的数据
        System.out.println(j.hget("stu", "name"));
        
        //获取所有的key
        Set<String> set = j.hkeys("stu");
        for (String s : set) {
            System.out.println(s);
        }
        
        System.out.println("========================");
        
        //获取所有values
        List<String> list = j.hvals("stu");
        for (String s : list) {
            System.out.println(s);
        }
        
        //删除指定值
        j.hdel("stu", "name");
        
        //指定值增加或减少
        j.hincrBy("stu", "age", 5);
        
        
        j.close();
    }

}

list类型数据操作

package com.xmaven.test;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class TestList {

    public static void main(String[] args) {
        Jedis j = new Jedis("127.0.0.1",6379);
        System.out.println("连接成功");
        
        //存储数据(list)栈结构,从左侧先进的后出
        j.lpush("score", "1","2","3","4");
        
        String s1 = j.rpop("score");
        System.out.println("从右删除了:"+s1);
        
        System.out.println("还剩下:");
        List<String> list = j.lrange("score", 0, -1);
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("============================");
        
        //存储数据(list)栈结构,从右侧开始先进先出
        j.rpush("price", "5","6","7","8");
        
        String s2 = j.rpop("price");
        System.out.println("从左删除了:"+s2);
        
        System.out.println("还剩下:");
          //第一个数字代表起始位置,第二个数字代表结束位置,-1 代表结束位置为结尾
        List<String> list2 = j.lrange("price", 0, -1);
        for (String s : list2) {
            System.out.println(s);
        }
        
        j.close();
    }

}

set类型数据操作

package com.xmaven.test;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class TestSet {

    public static void main(String[] args) {
        Jedis j = new Jedis("127.0.0.1",6379);
        System.out.println("连接成功");
        
        //set里面存储多个值
        j.sadd("names", "tom","cat","dog","tiger");
        //取出所有值
        Set<String> set = j.smembers("names");
        for (String s : set) {
            System.out.println(s);
        }
        System.out.println("=======================");
        //移除指定值,也可以是多个值
        j.srem("names", "cat");
        //判断是否存在某个值
        Boolean ishas = j.sismember("names", "cat");
        System.out.println(ishas ? "有":"没有");
        
        j.close();
    }

}

zset类型数据操作

package com.xmaven.test;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class TestZset {

    public static void main(String[] args) {
        Jedis j = new Jedis("127.0.0.1",6379);
        System.out.println("连接成功");
        
        //添加数据,第一个参数为键,第二个参数为分数用于排序使用,第三个参数为值
        j.zadd("nums", 1,"a");
        j.zadd("nums", 2,"b");
        j.zadd("nums", 3,"c");
        j.zadd("nums", 4,"d");
        j.zadd("nums", 5,"1");
        //正序输出
        Set<String> set1 = j.zrange("nums", 0, -1);
        for (String s : set1) {
            System.out.println(s);
        }
        
        System.out.println("======================");
        
        //逆序输出
        Set<String> set2 = j.zrevrange("nums", 0, -1);
        for (String s : set2) {
            System.out.println(s);
        }
        System.out.println("======================");
        //修改某个值的分数
        j.zincrby("nums", -2, "1");//5-2=3
        //获取里面元素的个数,类似于nums的长度
        System.out.println(j.zcard("nums"));
        //移除数据
        j.zrem("nums", "d");
        
        j.close();
    }

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringBoot集成Shiro框架

    目标:实现Spring Boot集成shiro权限认证框架 工具:IDEA--2020.1 学习目标:实现Spring Boot集成shiro权限认证框架 本次...

    背雷管的小青年
  • 作用域

    实际上,确切地说,private访问权限被限定在class的内部,而且与方法声明顺序无关。推荐把private方法放到后面,因为public方法定义了类对外提供...

    背雷管的小青年
  • Java--注解

    什么是注解(Annotation)?注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”:

    背雷管的小青年
  • Salesforce作为REST Service供java访问

    有的时候我们需要在其他平台上获取sfdc端的数据,比如做android项目需要访问sfdc数据,那样就需要Salesforce作为Service,java端通过...

    故久
  • 【小家java】Java中二进制与位运算(“^,&,>>,>>>”),使用移位算法写一个流水号生成器(订单号生成器)

    二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

    YourBatman
  • java1.8新特性之stream

    Stream字面意思是流,在java中是指一个来自数据源的元素队列并支持聚合操作,存在于java.util包中,又或者说是能应用在一组元素上一次执行的操作序列。...

    编程思录
  • 测试性能(Java 8 的循环和Java 7 的循环耗时的对比测试)

    说高级的stream就是那个并行流。下面是那个并行流的简单实现。只要是继承Collection类的都可以这么用。

    一觉睡到小时候
  • java之反射机制

    假设现在我们有一张动漫的图片,我们通过这张图片,在大脑中搜索有关记忆,就清楚这张图片是什么动漫里的谁;假设我们现在有一个名字,在大脑中搜索有关记忆,就自然而然地...

    绝命生
  • String 类和常量池

    尽量避免多个字符串拼接,因为这样会重新创建对象。如果需要改变字符串的话,可以使用 StringBuilder 或者 StringBuffer。

    happyJared
  • JVM面试考点—— 值==问题(常量池)

    java中基本类型的包装类的大部分都实现了常量池技术,即Byte,Short,Integer,Long,Character,Boolean。

    高广超

扫码关注云+社区

领取腾讯云代金券