五种数据结构类型带你走进Redis

前言:

关于redis的基础整理,常用的五种数据结构类型,String,List,Set,Hash,ZSet,下文是他们对应的简介、命令与应用案例,下文中key,value指的分别是键值,参数为values的时候指的是可以传入多个值

maven引入

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0-yp</version>
    </dependency>

写一个测试用例:

Jedis jedis = new Jedis("192.168.1.214",6379);
String ping = jedis.ping();
System.out.println(ping);

结果为这个=>PONG
说明可以连接成功

1.redis中的字符串

命令:

命令 功能 对应java代码 返回值类型 返回值
set 插入 key和value jedis.set(key,value) String “OK”
get 根据key获取value jedis.get(key) String value
del 根据key删除 jedis.del(key) Long

案例:

redis 127.0.0.1:6379> set hello world
OK
redis 127.0.0.1:6379> get hello
"world"
redis 127.0.0.1:6379> del hello
(integer) 1
redis 127.0.0.1:6379> get hello
(nil)
redis 127.0.0.1:6379>

2.redis中的列表

命令:

命令 功能 对应java代码 返回值类型 返回值
LPUSH 将给定制推入列表的左端 jedis.lpush(key,values) Long
RPUSH 将给定制推入列表的右端 jedis.rpush(key,values) Long
LPOP 从列表的左侧弹出一个值,并返回被弹出的值 jedis.lpop(key) String value
RPOP 从列表的右侧弹出一个值,并返回被弹出的值 jedis.rpop(key) String value
LRANGE 获取列表在给定范围的所有值 jedis.lrange(key, ,start,end); List<String> values
LINDEX 获取列表在给定位置上的单个元素 jedis.lindex(key,index) String value

案例:

127.0.0.1:6379> rpush list-key item
(integer) 1
127.0.0.1:6379> rpush list-key item2
(integer) 2
127.0.0.1:6379> rpush list-key item
(integer) 3
127.0.0.1:6379> lrange list-key 0 -1
1) "item"
2) "item2"
3) "item"
127.0.0.1:6379> lindex list-key 1
"item2"
127.0.0.1:6379> lpop list-key
"item"
127.0.0.1:6379> lrange list-key 0 -1
1) "item2"
2) "item"
127.0.0.1:6379> 

注:
0为起始索引
-1位结束索引

3.Redis的集合

简介:

set无法从某一端推入或者弹出
可以用SADD将元素添加入集合
SREM移除元素
SISMEMBER检查元素是否存在
SMEMBERS获取集合包含所有元素 非常多会很慢

命令:

命令 功能 对应java代码 返回值类型 返回值
SADD 将元素添加入集合 jedis.sadd(key,values) Long
SREM 移除元素 jedis.srem(key,values) Long
SISMEMBER 命令判断成员元素是否是集合的成员 jedis.sismember(key,value) Boolean
SMEMBERS 获取集合包含所有元素 非常多会很慢 jedis.smembers(key) Set<String> values

案例:

127.0.0.1:6379> sadd set-key item
(integer) 1
127.0.0.1:6379> sadd set-key item2
(integer) 1
127.0.0.1:6379> sadd set-key item3
(integer) 1
127.0.0.1:6379> sadd set-key item
(integer) 0
127.0.0.1:6379> smembers set-key
1) "item2"
2) "item3"
3) "item"
127.0.0.1:6379> sismember set-key item
(integer) 1
127.0.0.1:6379> sismember set-key item4
(integer) 0
127.0.0.1:6379> srem set-key item2
(integer) 1
127.0.0.1:6379> srem set-key item2
(integer) 0
127.0.0.1:6379> smembers set-key
1) "item3"
2) "item"
127.0.0.1:6379> 

4.Redis的散列 hash

简介:
散列可以存储多个键值对之间的映射,与字符串一样,值可以存储字符串或者数字值
并且用户可以对其数字值执行自增自减操作

命令:

命令 功能 对应java代码 返回值类型 返回值
HSET 在散列里面关联起给定的键值对 jedis.hset(key,field,value) Long
HGET 获取置顶散列值 18行 jedis.hget(key,field) String
HGETALL 获取所有值 jedis.hgetAll(key) Map<String, String> {field:value}
HDEL 删除指定值 jedis.hdel(key,field) Long

案例:

127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 1
127.0.0.1:6379> hset hash-key sub-key1 value2
(integer) 0
127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 0
127.0.0.1:6379> hset hash-key sub-key2 value1
(integer) 1
127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value1"
127.0.0.1:6379> hdel hash-key sub-key2
(integer) 1
127.0.0.1:6379> hdel hash-key sub-key2
(integer) 0
127.0.0.1:6379> hget hash-key sub-key1
"value1"
127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"
127.0.0.1:6379> 

5.Redis的有序集合

简介:
有序集合和散列一样,都用于存储键值对,有序集合可以根据传入的score(分数)进行排序

命令:

命令 功能 对应java代码 返回值类型 返回值
ZADD 将一个带有定分值的成员添加入有序集合 jedis.zadd(key,score,member) Long
ZRANGE 根据索引排序,并显示索引范围内的值 jedis.zrange(key,start,end) Set<String>
ZRANGEBYSCORE 根据分数排序,并显示分数范围内的值 jedis.zrangeByScore(key,min,max) Set<String>
ZREM 该成员如果存在,就可以移除该成员 jedis.zre(key,values) Long
ZINTERSTORE 根据两个有序集合交集运算生成新的有序集合,分数会相加 jedis.zinterstore(newkey,key1,keys) Long
ZINTERSTORE 根据两个有序集合并集运算生成新的有序集合,分数会相加 jedis.zunionstore(newkey,key1,keys) Long

案例:

127.0.0.1:6379> zadd zset-key 728 member1
(integer) 1
127.0.0.1:6379> zadd zset-key 982 member0
(integer) 1
127.0.0.1:6379> zadd zset-key 982 member0
(integer) 0
127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member1"
2) "728"
3) "member0"
4) "982"
127.0.0.1:6379> zrangebyscore zset-key 0 800 withscores
1) "member1"
2) "728"
127.0.0.1:6379> zrem zset-key member1
(integer) 1
127.0.0.1:6379> zrem zset-key member1
(integer) 0
127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member0"
2) "982"
127.0.0.1:6379> zrange zset-key 0 -1 
1) "member0"
127.0.0.1:6379> 


关于java withscores,是用单独的方法jedis.zrangeWithScores/zrangeByScoreWithScores,返回值为Set<Tuple>

发布了5 篇原创文章 · 获赞 3 · 访问量 96

猜你喜欢

转载自blog.csdn.net/weixin_42887211/article/details/103895587