前言:
关于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