Skip to content

tangfire/jedis-redis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jedis的简单使用(Jedis即用Java操作Redis)

使用SpringDataRedis操作redis

参考文章

Redis超详细入门教程(基础篇)

【Redis高手修炼之路】Jedis——Jedis的基本使用

Redis学习笔记:Jedis

环境配置

maven配置

<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

Redis基础

身份验证

使用 AUTH 命令进行身份验证 当 Redis 实例启用了密码验证后,任何客户端在执行操作之前都必须使用 AUTH 命令进行身份验证。

命令格式如下:

auth <password>

例如,如果你的 Redis 密码是 mypassword,你可以在 Redis CLI 中执行以下命令来进行认证:

auth mypassword

Redis通用命令

  1. Redis默认有16个数据库,切换到第2个数据库
select 1
  1. 查看当前数据库key的数量
dbsize
  1. 设置一个key为username,值为mike的数据
set username mike
  1. 获取key为username的值
get username
  1. 获取所有的key
keys *
  1. 清除当前数据库
flushdb
  1. 清除所有数据库
flushall

Redis基本命令

  1. 查询key为username是否存在
exists username
  1. 指定key为username移动到1号数据库
move username 1
  1. 指定key为username10s后过期
expire username 10
  1. 查看key为username还有多久过期
ttl username 
  1. 查看key为username是什么类型
type username

五种数据类型

String类型

  1. 设置key为name的值为htt
set name htt
  1. 获取key为name的值
get name
  1. 拼接key为name的值:httstudy
append name study
  1. 获取key为name的值的长度
strlen name
  1. 设置key为view的值加1
set view 0
incr view
  1. 设置key为view的值减1
decr view
  1. 设置key为view的值加10
incrby view 10
  1. 设置key为view的值减10
decrby view 10
  1. 截取下标为0-3之间的字符串,例如:abcdef,截取后abcd
getrange name 0 3
  1. 从下标为1进行替换字符串,例如:abcdef,替换后a000efg
setrange name 1 100
  1. 设置key为name的值为hello,10s后过期
setex name 10 hello
  1. 如果不存在key为title的,值设置为redis,如果存在,则set失败
setnx title redis
  1. 一次性设置多个值
mset k1 v1 k2 v2 k3 v3
mset user:1:name htt user:1:age 2
  1. 一次性取多个值
mget k1 k2 k3
mget user:1:name user:1:age
  1. 如果k1已经存在,则k1,k4全部设置失败,参考事务的原子性操作
msetnx k1 v1 k4 v4
  1. 如果不存在key为username的值,则返回nil,然后set进去;如果存在值,则获取原来的值并设置新的值
getset username htt

List集合类型

  1. 将一个值或多个值插入到列表的头部
lpush list 1

example:

lpush list 1
lpush list 2
lpush list 3
lrange list 0 -1
  1. 将一个值或者多个值插入到列表的尾部
rpush list 4

example:

rpush list 4
lrange list 0 -1
  1. 通过区间获取具体的值
lrange list 0 -1
  1. 移除list的第一个元素:3
lpop list 
  1. 移除list的最后一个元素:4
rpop list
  1. 通过下标获得list当中的某一个值
lindex list 0
  1. 获取list的长度
llen list
  1. 移除list集合指定个数的value,移除1个值为2的,精确匹配
lrem list 1 2
  1. 截取list集合中下标为1到下标为2之间的元素集合,并覆盖原来的list集合
ltrim list 1 2
  1. 更新list集合当中下标为0的值为bbb,如果下标0的值不存在,则报错
lset list 0 bbb
  1. 将一个某一个具体的值插入到某一个具体元素(默认第一个)的前面或者后面
linsert list before bbb aaa
linsert list after bbb ccc

Set集合类型

  1. 往set集合中添加一个元素
sadd set hello
  1. 查看set集合中所有元素
smembers set
  1. 查看set集合中是否存在某元素
sismember set world
  1. 随机抽取出1个元素
srandmember set
  1. 随机抽取出2个元素
srandmember set 2
  1. 随机删除set集合中某个元素
spop set
  1. 移动set集合中的world元素到set2集合中
smove set set2 world
  1. 作set2集合减去set集合的差集
sdiff set2 set
  1. set和set2的交集
sinter set set2
  1. set和set2作并集并去重
sunion set set2
  1. 删除一个元素
srem set apple
  1. 删除多个元素
srem set apple banana watermelon

Hash集合类型

  1. 往hash集合中存放键值对数据
hset hash username mike
  1. 从hash集合中获取数据
hget hash username
  1. 同时往hash集合中添加多个值
hmset hash username jack age 2
  1. 同时往hash集合中获取多个值
hmget hash username age
  1. 获取hash集合中所有的键值对
hgetall hash
  1. 删除hash集合中指定的key字段
hdel hash username
  1. 获取hash集合的长度
hlen hash
  1. 判断hash集合中指定字段是否存在
hexists hash username
  1. 获取hash集合中所有的key
hvals hash
  1. 获取hash集合中所有的值
hkeys hash
  1. 指定hash集合中指定增量
hincrby hash views 1
  1. 如果不存在则直接设置值,存在则设置失败
hsetnx hash password 123456

Zset有序集合类型

  1. 添加一个值
zadd zset 1 first
  1. 添加多个值
zadd zset 2 second 3 third 4 four
  1. 获取zset集合中所有元素
zrange zset 0 -1
  1. 给zset集合中的元素从小到大排序,-inf:负无穷,+inf:正无穷
zrangebyscore zset -inf +inf
  1. 从小到大排序并输出键值
zrangebyscore zset -inf +inf withscores
  1. 指定负无穷到1的范围
zrangebyscore zset -inf 1 withscores
  1. 移除zset集合中指定的元素
zrem zset four
  1. 查看zset集合中元素个数
zcard zset
  1. 反转指定范围
zrevrange zset 1 2

Redis删除总结

Redis 支持多种数据类型(如字符串、哈希、列表、集合、有序集合等),但删除键的操作是通用的,不依赖于数据类型。

删除数据的基本命令

1. 删除单个键

使用 DEL 命令可以删除指定的键及其对应的数据:

DEL <key>

例如,删除名为 myKey 的键:

DEL myKey

如果删除的键不存在,DEL 命令不会报错,返回值为 0,如果删除成功,则返回值为 1

2. 删除多个键

DEL 命令也支持删除多个键,可以一次性删除多个键:

DEL key1 key2 key3

如果删除的某个键不存在,Redis 会跳过它,不会报错。

3. 删除特定数据类型

Redis 中的数据类型包括字符串、哈希、列表、集合、有序集合等。虽然删除键的命令 (DEL) 适用于所有类型的数据,但如果你希望删除某种数据类型中的特定元素,则需要使用与该数据类型相关的命令。

  • 删除哈希表中的字段 如果你想删除哈希数据类型中的某个字段,可以使用 HDEL 命令:

    HDEL <hash> <field1> <field2> ...

    例如,删除哈希表 user:1000 中的字段 nameage

    HDEL user:1000 name age
  • 删除列表中的元素 如果要删除列表中的特定元素,可以使用 LREM 命令:

    LREM <list> <count> <value>
    • count0 表示删除列表中所有匹配的元素,count 为正数表示从头部开始删除,负数表示从尾部开始删除。 例如,删除列表 myList 中的所有值为 hello 的元素:
    LREM myList 0 hello
  • 删除集合中的元素 如果要删除集合中的某个元素,可以使用 SREM 命令:

    SREM <set> <member1> <member2> ...

    例如,删除集合 mySet 中的元素 member1member2

    SREM mySet member1 member2
  • 删除有序集合中的元素 删除有序集合(Sorted Set)中的元素使用 ZREM 命令:

    ZREM <zset> <member1> <member2> ...

    例如,删除有序集合 myZSet 中的成员 member1member2

    ZREM myZSet member1 member2

4. 删除数据库中的所有键

如果你想删除 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

每种数据类型的删除操作适用于其特定的数据结构,但删除键的操作是相同的。


About

jedis的简单使用(Jedis即用Java操作Redis)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages