redis内存数据库:笔记4 jedis操作5个数据类型

目录

 

1、jedis单例连接池和操作String和map类型的Value的实战

2、String类型

3、List类型

4、Hash类型

5、set集合类型

6、有序set集合类型


1、jedis单例连接池和操作String和map类型的Value的实战

public class CustomJedisPoolUtils {
    private static CustomJedisPool jedisPool = null;

    public static CustomJedisPool getJedisPool() {
        if (jedisPool == null) {
            synchronized (CustomJedisPoolUtils.class) {
                if (jedisPool == null) {
                    JedisPoolConfig poolConfig = new JedisPoolConfig();
                    poolConfig.setNumTestsPerEvictionRun(-1);// 这个配置项可以不用显式指定,jedispoolConfig默认给的是-1,这里写出来只是为了解释下-1的含义:对连接池中的所有空闲连接进行检查
                    poolConfig.setTimeBetweenEvictionRunsMillis(300000); // 5分钟
                    poolConfig.setMinEvictableIdleTimeMillis(1800000);//逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
                    poolConfig.setMaxTotal(30);   //	设置最大连接数
                    poolConfig.setTestWhileIdle(true);//在空闲时检查有效性, 默认false

                    final ApiInfo apiInfo = ApiInfo.build().
                            setUrl("http")
                            .setRole(Role.MASTER).create();
                    jedisPool = new CustomJedisPool(poolConfig, apiInfo, "aa");
                }
            }
        }
        return jedisPool;
    }

    public static void returnJedisPool() {
        jedisPool.close();
    }

}

 

import com.sohu.jedis.ApiInfo;
import com.sohu.jedis.CustomJedis;
import com.sohu.jedis.CustomJedisPool;
import com.sohu.jedis.Role;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Map;


public class RedisUtilsClass {
    public static final int CACHE_SECONDS = 604800;//7天
    private static final Log logger = LogFactory.getLog(RedisUtilsClass.class);
    CustomJedisPool jedisPool=null;
    private CustomJedis jedis = null;

    public RedisUtilsClass(CustomJedisPool jedisPool) {
        this.jedisPool=jedisPool;
        this.jedis=jedisPool.getResource();
    }


    //String类型的set/get
    public void setExKey(String key, String value) {
        int tryTime = Config.tryTime;
        while(tryTime > 0) {
            tryTime--;
            try {
                this.jedis.setex(key, CACHE_SECONDS, value);
                logger.info("set_into_redis key : " + key + "   ,   value: " + value);
                break;
            } catch (Exception e) {
                e.printStackTrace();
                this.jedis.close();
                this.jedis=this.jedisPool.getResource();
                logger.info("setExKey get new jedis connection");
            }
        }
    }


    public String getExKey(String key) {
        String value=null;
        int tryTime = Config.tryTime;
        while(tryTime > 0){
            tryTime--;
            try {
                value=this.jedis.get(key);
                break;
            } catch (Exception e) {
                e.printStackTrace();
                this.jedis.close();
                this.jedis=this.jedisPool.getResource();
                logger.info("getExKey get new jedis connection");
            }
        }
        return value;

    }
}

每个线程一个链接 

RedisUtilsClass redisUtils = new RedisUtilsClass(CustomJedisPoolUtils.getJedisPool());

 

2、String类型

    @Test
    public void testString(){
        //设置键  获取键   get   set
        jedis.set("steve","stevetao");
        System.out.println("设置后值:"+jedis.get("steve"));
        //追加键       append
        jedis.append("steve"," Is Good Man");
        System.out.println("追加后值:"+jedis.get("steve"));
        //删除操作      del
        jedis.del("steve");
        System.out.println("删除后值:"+jedis.get("steve"));
        //不存在就保存,   setnx   msetnx
        jedis.setnx("steve","stevetao");
        System.out.println("设置后值:"+jedis.get("steve"));
        System.out.println("再次设置后值:"+jedis.setnx("steve","stevetao"));
        //截取字符串      substr
        System.out.println("截取后值:"+jedis.substr("steve",0,4));
        //设置多个键值对       mset    mget
        jedis.mset(new String[]{"zhangsan","123","lisi","1234"});
        System.out.println("多次设置后值:"+jedis.mget("zhangsan","lisi"));
        //递增递减          incr  decr      incrby  decrby
        jedis.incr("zhangsan");
        jedis.decr("lisi");
        System.out.println("递增递减后值:"+jedis.mget("zhangsan","lisi"));
        jedis.incrBy("zhangsan",6);
        jedis.decrBy("lisi",3);
        System.out.println("递增递减后值:"+jedis.mget("zhangsan","lisi"));
    }

3、List类型

    @Test
    public void testList(){
        //尾添加 rpush          头添加  lpush
        jedis.lpush("books","java","C++","Ruby","Scala","python");
        jedis.rpush("language","java","C++","Ruby","Scala","python");
        //  -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
        System.out.println("头添加后books值:"+jedis.lrange("books",0,-1));
        System.out.println("尾添加后language值:"+jedis.lrange("language",0,-1));
        //尾部删除 rpop   头部删除 lpop
        System.out.println("删除的值为:"+jedis.lpop("books"));
        System.out.println("删除的值为:"+jedis.rpop("language"));
        System.out.println("头部删除后books值:"+jedis.lrange("books",0,-1));
        System.out.println("尾部删除后language值:"+jedis.lrange("language",0,-1));
        //尾部删除并头添加 rpoplpush
        jedis.rpoplpush("language","books");
        System.out.println("尾部删除并头添加后books值:"+jedis.lrange("books",0,-1));
        System.out.println("尾部删除并头添加后language值:"+jedis.lrange("language",0,-1));
        //区别:  只能给存在的list做添加,不能项lpush那样能新增list
        jedis.lpushx("books","php");
        jedis.lpushx("book","php");
        System.out.println("头添加后books值:"+jedis.lrange("books",0,-1));
        System.out.println("头添加后book值:"+jedis.lrange("book",0,-1));
        //获取集合长度 llen  指定索引的值 lindex   保留截取的值 ltrim
        System.out.println("books集合长度:"+jedis.llen("books"));
        System.out.println("books集合第二个数值:"+jedis.lindex("books",1));
        jedis.ltrim("books",0,2);
        System.out.println("截取后books值:"+jedis.lrange("books",0,-1));
    }

4、Hash类型

    @Test
    public void testHash(){
        //适合字段:设值hset  取值hget(如果value是json字符串,类似保存对象)
        jedis.hset("student","name","zhangsan");
        System.out.println("student中name的值为:"+jedis.hget("student","name"));
        //适合对象:设值hmset      取值hmget
        Map<String,String> map = new HashMap<String,String>();
        map.put("name", "lisi");
        map.put("age", "36");
        jedis.hmset("teacher",map);
        System.out.println("teacher中name、age的值为:"+jedis.hmget("teacher","name","age"));
        //teacher是否存在键age  hexists
        if(jedis.hexists("teacher","age")){
            //给指定值增加4   hincrBy
            jedis.hincrBy("teacher","age",4);
            System.out.println("teacher中name、age的值为:"+jedis.hmget("teacher","name","age"));
        }
        //返回key的个数hlen      返回值hvals    返回键hkeys  键值对hgetAll
        jedis.hset("student","age","13");
        jedis.hset("student","qq","2246920330");
        jedis.hset("student","address","beijing");
        System.out.println("student中键的个数为:"+jedis.hlen("student"));
        System.out.println("student中所有的键为:"+jedis.hkeys("student"));
        System.out.println("student中所有的值为:"+jedis.hvals("student"));
        System.out.println("student中所有的键值对为:"+jedis.hgetAll("student"));
        //删除 hdel
        jedis.hdel("student",new String[]{"address","qq","age"});
        System.out.println("删除后,student中所有的键值对为:"+jedis.hgetAll("student"));
    }

5、set集合类型

6、有序集合

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值