欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-29 10:42:16
...
  • 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

赋值、取值

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

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

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

弹栈  从尾部弹出元素

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      (从大到小)