Redis 数据结构(五大数据类型)命令总结

  • Java 操作Redis

Jedis 导入依赖(maven项目)

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.8.0</version>
</dependency>

Redis 开发商 提供了一个java版本支持,jedis类也可以获得java和Redis的连接

Jedis jedis = new Jedis("192.168.59.150", 6379);
jedis.set("str", "abcdefg");
String str = jedis.get("str");
System.out.println(str);

jedis.close();

 

Jedis连接池配置

最大连接数     :连接池中连接存在最多的个数,如果访问超过这个个数

多余的连接需要等待,连接池不会再创建新的连接

最大空闲数 :8 池子中默认有5条连接  同时来了7个请求,连接池需要

创建15条更多的连接,请求结束后,释放这些连接

最小空闲数     :池子默认的连接个数

JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(20);
config.setMaxIdle(10);
config.setMinIdle(6);
JedisPool pool = new JedisPool(config,"192.168.59.150",6379);

Jedis jedis = pool.getResource();

System.out.println(jedis.get("str"));

 

封装工具类,读取配置文件的方式

JedisPoolUtils 工具类

private static JedisPool jedisPool =null;
static {
    //读取properties配置文件
    InputStream in = JedisPoolUtils.class.getClassLoader().getResourceAsStream("redis.properties");
    Properties pro = new Properties();
    try {
        pro.load(in);
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("配置文件读取失败!");
    }
    String host = pro.getProperty("redis.host");
    Integer port = Integer.valueOf(pro.getProperty("redis.port"));
    Integer maxIdle= Integer.valueOf(pro.getProperty("redis.maxIdle"));
    Integer minIdle = Integer.valueOf(pro.getProperty("redis.minIdle"));
    Integer maxTotal = Integer.valueOf(pro.getProperty("redis.maxTotal"));


    JedisPoolConfig config = new JedisPoolConfig();
    config.setMaxTotal(maxTotal);
    config.setMaxIdle(maxIdle);
    config.setMinIdle(minIdle);
    jedisPool= new JedisPool(config, host, port);

   /* System.out.println(host);
    System.out.println(port);
    System.out.println(maxTotal);
    System.out.println(maxIdle);
    System.out.println(minIdle);*/
}

public static  Jedis getJedis(){
    return jedisPool.getResource();
}

public static void release(Jedis jedis){
    if ( jedis !=null){
        jedis.close();
    }
}

测试代码

Jedis jedis = JedisPoolUtils.getJedis();
JedisPoolUtils.release(jedis);
System.out.println(jedis.get("str"));

维护Redis key 是有规范的

详情请看: 阿里巴巴规约

  • 字符串

增  set

删  del

改  incr  decr  incrBy decrBy   append

查  get

赋值、取值

Del key 删除    例如 del username

数值 增减

Incr num 自增          decr num 自减

 扩展命令

Incrby num 11 加11

Decrby num 11 减11

拼接字符串

  append +key+ 字符串   例如:append num fdw

 

  • hash 哈希表

Redis hash 是一个string类型的fieldvalue的映射表,hash特别适合用于存储对象

赋值

hset myhash user tom     //给单个字段赋值,

HMSET myhash2 user jerry age 18  //给多个字段赋值

取值

hget myhash user           获取单个字段的值

HMGET myhash2 user age      获取多个字段的值

取全部的值

 HGETALL key               HGETALL myhash2

删除

hdel  key  fields     例如:hdel  myhash     name

 删除全部

Del  key                      例如:del  myhash

增加 一个数(10)

HINCRBY KEY field  num         例如:HINCRBY myhash  age  10

减少 一个数(-10)

HINCRBY KEY field  -num              例如:HINCRBY myhash  age  -10

判断指定的key中的field是否存在

返回 1 表示存在   返回0 表示不存在

HEXISTS key field          例如:HEXISTS myhash name

获取key所包含的field的数量

hlen key

获取key所包含的field

hkeys myhash
  • List

         底层使用链表实现 集合  增加和删除速度比较快

         有序的列表,按照插入的顺序,可以重复的

赋值

lpush key value [value ...]  例如:LPUSH list a b c d e

查看 list所有的值start、stop可    为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推

LRANGE key start stop     如:LRANGE list 0 -1

在list尾部添加值

rpush key value1、value2…         如:RPUSH list 1 2 3

弹栈(从头部弹出元素)

LPOP key              例如: LPOP list

弹栈  从尾部弹出元素

RPOP key

lpushx key value:仅当参数中指定的key存在时(如果与key管理的list中没    有值时,则该key是不存在的)在指定的key所关联的list的头部插入value。

Lpushx list tom

rpushx key value:在该list的尾部添加元素

Rpushx list Jerry

lrem key count value:删除count个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。

LREM list 1 a

lset key index value:设置链表中的index的脚标的元素值,0代表链表的头元   素,-1代表链表的尾元素

LSET list 2 xxxx           //替换下标为2 的值

linsert key before|after pivot value:在pivot元素前或者后插入value这个 元素。

LINSERT list before 2 yyyy

rpoplpush resource destination:将链表中的尾部元素弹出并添加到头部

RPOPLPUSH list list2

llen key:返回指定的key关联的链表中的元素的数量。

LLEN list

 

  • Set

         无序的,没有重复的     查询快

sadd key value1、value2…:向set中添加数据,如果该key的值已有则不会重复添加

smembers key:获取set中所有的成员

scard key:获取set中成员的数量

sismember key member:判断参数中指定的成员是否在该set中,1表示存           在,0表示不存在或者该key本身就不存在

srem key member1、member2…:删除set中指定的成员

SREM set dd ee

 

srandmember key:随机返回set中的一个成员

SRANDMEMBER        set

 

sdiff key1 key2:返回key1与key2中相差的成员,而且与key的顺序有关。即返回差集。

SDIFF set set2  //返回set2中存在但 set中不存在的member

 

sdiffstore destination key1 key2:将key1、key2相差的成员存储在  destination上

SDIFFSTORE set3 set set2

 

sinter key[key1,key2…]:返回交集。

SINTER set set2

 

sinterstore destination key1 key2:将返回的交集存储在destination上

sinterstore  set3     set  set2

 

sunion key1、key2:返回并集

SUNION set set2

 

sunionstore destination key1 key2:将返回的并集存储在destination上

sunionstore  set3   set  set2

 

SCARD  key 返回set成员数量

SRANDMEMBER  key 随机返回set中一个成员

  • Sort Set

         有序的,不可重复的

                   比分的权重来实现有序

应用场景:              游戏排名

添加元素

zadd key score member score2 member2 :将所有成员以及该成员的             分数存放到sorted-set中

ZADD mysort 100 a 80 b 50 c

获得元素

zcard key:获取集合中的成员数量

zcard       mysort

    返回指定成员分数ZSCORE key member

ZSCORE mysort a

删除元素

zrem key member [member ...] 删除指定成员

zrem  mysort   a

范围查询

ZRANGE key start stop获取集合中脚标为start-stop的成员

ZRANGE mysort 0 -1
ZRANGE mysort 0 -1 WITHSCORES  返回成员及其分数(默认从小到大)

ZREVRANGE key start stop [WITHSCORES]从 大到小排序

ZREVRANGE mysort 0 -1 withscores

从小到大删除 两个成员

ZREMRANGEBYRANK mysort 0 1

ZREMRANGEBYSCORE key min max  根据分数删除从min到max的成员

ZREMRANGEBYscore mysort 25 75

按分数从小到大 分页查询

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

ZRANGEBYSCORE mysort 25 100 limit 0 3  //显示mysort中25到57的成员 第一页的3条数据

ZINCRBY key increment member指定有序集合中的成员增加指定分数

ZINCRBY mysort 25 e

ZCOUNT key min max 获取分数min到max的成员

ZCOUNT mysort 20 100

ZRANk key member 返回成员在集合中的排名

ZRANk mysort f                  (从小到大)

ZREVRANk key member      (从大到小)

 

猜你喜欢

转载自blog.csdn.net/qq_38396292/article/details/81559717