1. Redis数据结构 + 常用命令 + Java 客户端

1. 数据结构

5 种数据结构:

  1. 字符串 string
  2. 列表 list
  3. 哈希 hash
  4. 集合 set
  5. 有序集合 zset

2. 常用命令

2.1 启动、关闭

./redis-server redis.conf &
./redis-cli -p 6880

./redis-cli -p 6880 shutdown

2.2 全局命令

key */*ool # 查看所有键
dbsize # 查看指定数据库中键总数,如果存在大量键,线上禁止使用此命令
exists key # 检查键是否存在
del key # 删除 key

expire key seconds # 设置过期时间
ttl key # 查看键剩余的过期时间

type key # 查看键的数据结构类型

select 1 # 切换库

flushdb 2 # 清空数据库 2
flushall # 清空所有数据库

2.3 字符串命令

set key value # 设置键、值
get key # 获取值

set key value ex 10 # 设置 10s 后过期
set key value px 1000 # 设置 1000ms 后过期

setnx key value # 不存在 key 返回 1,设置成功;存在 key 返回 0,设置失败

mset key1 vlaue1 key2 value2 # 批量设置键、值
mget key1 key2 # 批量获取值

incr key # 加 1
decr key # 减 1

incrby key 2 # 加 2
decrby key 2 # 减 2

incrbyfloat key 1.1 # 加 1.1

append key value2 # 在原 value 上追加 value2

strlen key # 字符串长度

getrange key 2 4 # 返回 value 中 2-4 位

2.4 列表命令

lpush key value1 value2 # 左侧添加 value1 value2
rpush key value1 value2 # 右侧添加 value1 value2

lpop key # 删除左侧第一个元素
rpop key # 删除右侧第一个元素

lrange key 0 -1 # 从左到右获取所有元素

linsert key after value1 value2 # 在 value1 之前插入 value2

lindex key index # 返回 index 处的元素

llen key # 返回列表长度

2.5 哈希命令

hset key field value # 设置值
hget key field # 获取值
hdel key filed # 删除值

hmset key field1 value1 field2 value2 # 批量设置值
hmget key filed1 filed2 # 批量获取值

hexist key filed1 # 判断 field 是否存在

2.6 集合命令

sadd key value1 value2 value3 # 添加值
smembers key # 获取所有元素

scard key # 计算元素个数

srem key value1 # 删除 value1

sinter key1 key2 # 交集
sunion key1 key2 # 并集
sdiff key1 key2 # 叉集

2.7 有序集合命令

zadd key socre1 member1 # 添加

zrank key member1 # 排名
zscore key member1 # 分数

zcard key # 返回总数

zrange key 0 3 # 按范围返回成员

3. Java 客户端

  1. Maven
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.6.3</version>
</dependency>
  1. 配置
# Redis服务器地址
redis.host=127.0.0.1
# Redis服务器连接端口
redis.port=6880
# Redis服务器连接密码(默认为空)
redis.password=null
redis.timeout=30000
# 连接池最大连接数(使用负值表示没有限制)
redis.maxTotal=30
# 连接池中的最大空闲连接
redis.maxIdle=10
redis.numTestsPerEvictionRun=1024
redis.timeBetweenEvictionRunsMillis=30000
redis.minEvictableIdleTimeMillis=1800000
redis.softMinEvictableIdleTimeMillis=10000
# 连接池最大阻塞等待时间(使用负值表示没有限制)
redis.maxWaitMillis=1500
redis.testOnBorrow=true
redis.testWhileIdle=true
redis.blockWhenExhausted=false
redis.JmxEnabled=true
  1. 使用
@Configuration
@PropertySource("classpath:application.properties")
public class RedisConfig {
    @Value("${redis.host}")
    private String host;

    @Value("${redis.port}")
    private int port;

    @Value("${redis.timeout}")
    private int timeout;

    @Value("${redis.maxIdle}")
    private int maxIdle;

    @Value("${redis.maxWaitMillis}")
    private int maxWaitMillis;

    @Value("${redis.blockWhenExhausted}")
    private Boolean blockWhenExhausted;

    @Value("${redis.JmxEnabled}")
    private Boolean JmxEnabled;

    @Bean
    public JedisPool jedisPoolFactory() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
        // 连接耗尽时是否阻塞, false报异常, true阻塞直到超时, 默认true
        jedisPoolConfig.setBlockWhenExhausted(blockWhenExhausted);
        // 是否启用pool的jmx管理功能, 默认true
        jedisPoolConfig.setJmxEnabled(JmxEnabled);
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout);
        return jedisPool;
    }
}

@Component
public class RedisString {

    public final static String RS_STR_NS = "redis:";

    @Autowired
    private JedisPool jedisPool;

    public String set(String key, String value) {
        try (Jedis jedis = jedisPool.getResource()) {
            return jedis.set(RS_STR_NS + key, value);
        } catch (Exception e) {
            throw new RuntimeException("向Redis中存值失败!");
        }
    }

}

@SpringBootTest
public class TestRedisString {

    @Autowired
    private RedisString redisString;

    @Test
    void testSet() {
        System.out.println(redisString.set("test", "Hello Java"));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值