Redis常用操作(持续补充)
程序员文章站
2022-05-11 12:44:36
...
设置密码
# 设置密码
CONFIG set requirepass "123456"
# 查询密码
CONFIG get requirepass
# 密码登录
AUTH password
auth 123456
# 访问其他服务上redis。需要在本地装redis客户端
redis-cli -h ip地址 -p 6379
Redis常用的操作
- hash的操作
> hset hash-key sub-key1 value1
(integer) 1
> hset hash-key sub-key2 value2
(integer) 1
> hset hash-key sub-key1 value1
(integer) 0
> hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value2"
> hdel hash-key sub-key2
(integer) 1
> hdel hash-key sub-key2
(integer) 0
> hget hash-key sub-key1
"value1"
> hgetall hash-key
1) "sub-key1"
2) "value1"
windows 下设置开机自启动
redis-server --service-install redis.windows-service.conf --loglevel verbose
过期时间操作
- 设置过期时间(单位:秒)
expire key seconds
- 设置过期时间(时间戳)
expireat key unixTime
- 设置过期时间(单位:豪秒)
pexpire key milliseconds
- 返回剩余过期时间(单位:秒)
TTL key
- 返回剩余过期时间(单位:豪秒)
PTTL key
- 移除过期时间的设置
persist key
设置ID递增递减
- key的value每次递增1
incr key
- key的value每次递增指定数
incrby key num
- key的value每次减1
encr key
- key的value每次递减指定数
encrby key num
Redis使用ip地址访问
- (必须)修改redis服务器的配置文件redis.windows.conf
注释绑定的主机地址
# bind 127.0.0.1
- 修改redis的守护进程为no,不启用
daemonize "no"
- (必须)修改redis的保护模式为no,不启用
protected-mode"no"
-
在Redis根目录下,以管理员身份打开CMD命令窗口
输入redis-server redis.windows.conf,启动服务 -
在Redis根目录下尝试远程连接并查看
redis-cli -h ip地址 -p 6379 能够连接
info 能够输出信息
java使用redis递增
如果key在redis中不存在,则会自动初始化生成key,并返回0。
public Long getIncr(String key){
RedisAtomicLong redisAtomicLong = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
return redisAtomicLong.getAndIncrement();
}
Redis分布式锁
class Redis{
/**
* setNX
* @param lockKey 锁
* @param value 请求标识
* @param exptime 过期时间
* @return 是否获取到锁
*/
public boolean tryGetDistributedRedisLock( String lockKey, Serializable value, final long exptime) {
return (Boolean) redisTemplate.execute(new RedisCallback<Boolean>() {
@Override
public Boolean doInRedis(RedisConnection connection) {
RedisSerializer valueSerializer = redisTemplate.getValueSerializer();
RedisSerializer keySerializer = redisTemplate.getKeySerializer();
Object obj = connection.execute("set", keySerializer.serialize(lockKey),
valueSerializer.serialize(value),
SafeEncoder.encode("NX"),
SafeEncoder.encode("EX"),
Protocol.toByteArray(exptime));
return obj != null;
}
});
}
/**
* 释放锁
*/
private final Long RELEASE_SUCCESS = 1L;
/**
* 释放分布式锁
* @param lockKey 锁
* @param requestId 请求标识
* @return 是否释放成功
*/
public boolean releaseDistributedRedisLock(String lockKey, String requestId) {
String script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
Object result = redisTemplate.execute(new DefaultRedisScript(script,Long.class), Collections.singletonList(lockKey), requestId);
return RELEASE_SUCCESS.equals(result);
}
}
上一篇: Linux常用的基本命令,持续补充。
下一篇: Docker之Mysql安装及配置