jedis的简单使用(Jedis即用Java操作Redis)
【Redis高手修炼之路】Jedis——Jedis的基本使用
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version> <!-- 或者使用其他版本 -->
<scope>test</scope>
</dependency>
package com.utils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.ResourceBundle;
/**
* 连接池工具类
*/
public class JedisUtils {
//创建一个连接对象
private static JedisPool pool;
static {
//创建连接池的配置对象
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数和最长等待时间
ResourceBundle bundle = ResourceBundle.getBundle("jedis");
//得到配置文件中的属性值
String host = bundle.getString("host");
int port = Integer.parseInt(bundle.getString("port"));
int maxTotal = Integer.parseInt(bundle.getString("maxTotal"));
int maxWaitMillis = Integer.parseInt(bundle.getString("maxWaitMillis"));
String password = bundle.getString("password");
//设置配置对象的参数
config.setMaxTotal(maxTotal);
config.setMaxWaitMillis(maxWaitMillis);
//创建连接池对象
// 创建连接池对象,如果存在密码,传入密码
if (password != null && !password.isEmpty()) {
pool = new JedisPool(config, host, port, 2000, password); // 密码参数
} else {
pool = new JedisPool(config, host, port); // 无密码的情况
}
}
/**
* 得到redis连接对象
* @return
*/
public static Jedis getJedis() {
return pool.getResource();
}
}
/test/java/TestRedis
使用 AUTH 命令进行身份验证 当 Redis 实例启用了密码验证后,任何客户端在执行操作之前都必须使用 AUTH 命令进行身份验证。
命令格式如下:
auth <password>
例如,如果你的 Redis 密码是 mypassword,你可以在 Redis CLI 中执行以下命令来进行认证:
auth mypassword
- Redis默认有16个数据库,切换到第2个数据库
select 1
- 查看当前数据库key的数量
dbsize
- 设置一个key为username,值为mike的数据
set username mike
- 获取key为username的值
get username
- 获取所有的key
keys *
- 清除当前数据库
flushdb
- 清除所有数据库
flushall
- 查询key为username是否存在
exists username
- 指定key为username移动到1号数据库
move username 1
- 指定key为username10s后过期
expire username 10
- 查看key为username还有多久过期
ttl username
- 查看key为username是什么类型
type username
- 设置key为name的值为htt
set name htt
- 获取key为name的值
get name
- 拼接key为name的值:httstudy
append name study
- 获取key为name的值的长度
strlen name
- 设置key为view的值加1
set view 0
incr view
- 设置key为view的值减1
decr view
- 设置key为view的值加10
incrby view 10
- 设置key为view的值减10
decrby view 10
- 截取下标为0-3之间的字符串,例如:abcdef,截取后abcd
getrange name 0 3
- 从下标为1进行替换字符串,例如:abcdef,替换后a000efg
setrange name 1 100
- 设置key为name的值为hello,10s后过期
setex name 10 hello
- 如果不存在key为title的,值设置为redis,如果存在,则set失败
setnx title redis
- 一次性设置多个值
mset k1 v1 k2 v2 k3 v3
mset user:1:name htt user:1:age 2
- 一次性取多个值
mget k1 k2 k3
mget user:1:name user:1:age
- 如果k1已经存在,则k1,k4全部设置失败,参考事务的原子性操作
msetnx k1 v1 k4 v4
- 如果不存在key为username的值,则返回nil,然后set进去;如果存在值,则获取原来的值并设置新的值
getset username htt
- 将一个值或多个值插入到列表的头部
lpush list 1
example:
lpush list 1
lpush list 2
lpush list 3
lrange list 0 -1
- 将一个值或者多个值插入到列表的尾部
rpush list 4
example:
rpush list 4
lrange list 0 -1
- 通过区间获取具体的值
lrange list 0 -1
- 移除list的第一个元素:3
lpop list
- 移除list的最后一个元素:4
rpop list
- 通过下标获得list当中的某一个值
lindex list 0
- 获取list的长度
llen list
- 移除list集合指定个数的value,移除1个值为2的,精确匹配
lrem list 1 2
- 截取list集合中下标为1到下标为2之间的元素集合,并覆盖原来的list集合
ltrim list 1 2
- 更新list集合当中下标为0的值为bbb,如果下标0的值不存在,则报错
lset list 0 bbb
- 将一个某一个具体的值插入到某一个具体元素(默认第一个)的前面或者后面
linsert list before bbb aaa
linsert list after bbb ccc
- 往set集合中添加一个元素
sadd set hello
- 查看set集合中所有元素
smembers set
- 查看set集合中是否存在某元素
sismember set world
- 随机抽取出1个元素
srandmember set
- 随机抽取出2个元素
srandmember set 2
- 随机删除set集合中某个元素
spop set
- 移动set集合中的world元素到set2集合中
smove set set2 world
- 作set2集合减去set集合的差集
sdiff set2 set
- set和set2的交集
sinter set set2
- set和set2作并集并去重
sunion set set2
- 删除一个元素
srem set apple
- 删除多个元素
srem set apple banana watermelon
- 往hash集合中存放键值对数据
hset hash username mike
- 从hash集合中获取数据
hget hash username
- 同时往hash集合中添加多个值
hmset hash username jack age 2
- 同时往hash集合中获取多个值
hmget hash username age
- 获取hash集合中所有的键值对
hgetall hash
- 删除hash集合中指定的key字段
hdel hash username
- 获取hash集合的长度
hlen hash
- 判断hash集合中指定字段是否存在
hexists hash username
- 获取hash集合中所有的key
hvals hash
- 获取hash集合中所有的值
hkeys hash
- 指定hash集合中指定增量
hincrby hash views 1
- 如果不存在则直接设置值,存在则设置失败
hsetnx hash password 123456
- 添加一个值
zadd zset 1 first
- 添加多个值
zadd zset 2 second 3 third 4 four
- 获取zset集合中所有元素
zrange zset 0 -1
- 给zset集合中的元素从小到大排序,-inf:负无穷,+inf:正无穷
zrangebyscore zset -inf +inf
- 从小到大排序并输出键值
zrangebyscore zset -inf +inf withscores
- 指定负无穷到1的范围
zrangebyscore zset -inf 1 withscores
- 移除zset集合中指定的元素
zrem zset four
- 查看zset集合中元素个数
zcard zset
- 反转指定范围
zrevrange zset 1 2
Redis 支持多种数据类型(如字符串、哈希、列表、集合、有序集合等),但删除键的操作是通用的,不依赖于数据类型。
使用 DEL
命令可以删除指定的键及其对应的数据:
DEL <key>
例如,删除名为 myKey
的键:
DEL myKey
如果删除的键不存在,DEL
命令不会报错,返回值为 0
,如果删除成功,则返回值为 1
。
DEL
命令也支持删除多个键,可以一次性删除多个键:
DEL key1 key2 key3
如果删除的某个键不存在,Redis 会跳过它,不会报错。
Redis 中的数据类型包括字符串、哈希、列表、集合、有序集合等。虽然删除键的命令 (DEL
) 适用于所有类型的数据,但如果你希望删除某种数据类型中的特定元素,则需要使用与该数据类型相关的命令。
-
删除哈希表中的字段 如果你想删除哈希数据类型中的某个字段,可以使用
HDEL
命令:HDEL <hash> <field1> <field2> ...
例如,删除哈希表
user:1000
中的字段name
和age
:HDEL user:1000 name age
-
删除列表中的元素 如果要删除列表中的特定元素,可以使用
LREM
命令:LREM <list> <count> <value>
count
为0
表示删除列表中所有匹配的元素,count
为正数表示从头部开始删除,负数表示从尾部开始删除。 例如,删除列表myList
中的所有值为hello
的元素:
LREM myList 0 hello
-
删除集合中的元素 如果要删除集合中的某个元素,可以使用
SREM
命令:SREM <set> <member1> <member2> ...
例如,删除集合
mySet
中的元素member1
和member2
:SREM mySet member1 member2
-
删除有序集合中的元素 删除有序集合(Sorted Set)中的元素使用
ZREM
命令:ZREM <zset> <member1> <member2> ...
例如,删除有序集合
myZSet
中的成员member1
和member2
:ZREM myZSet member1 member2
如果你想删除 Redis 数据库中的所有键,可以使用 FLUSHDB
命令。这个命令会删除当前数据库中的所有键(但不会影响其他数据库):
FLUSHDB
如果你希望删除所有数据库中的所有键,可以使用 FLUSHALL
命令:
FLUSHALL
- 删除单个键:使用
DEL <key>
。 - 删除多个键:使用
DEL <key1> <key2> ...
。 - 删除哈希字段:使用
HDEL <hash> <field1> <field2> ...
。 - 删除列表元素:使用
LREM <list> <count> <value>
。 - 删除集合元素:使用
SREM <set> <member1> <member2> ...
。 - 删除有序集合成员:使用
ZREM <zset> <member1> <member2> ...
。 - 清空当前数据库:使用
FLUSHDB
。 - 清空所有数据库:使用
FLUSHALL
。
每种数据类型的删除操作适用于其特定的数据结构,但删除键的操作是相同的。