Redis 日常操作

常见问题:
1、Redis中删除过期Key的三种策略,原理
2、利用Redis构建集群
3、Redis事务管理
4、发布与订阅
5、Redis连接数一直比较高
6、redis的配置文件可以通过info命令下面的config_file获得

目录

基本操作

# 启动 安装完Redis后执行以下命令启动redis,/usr/local/etc/redis.conf配置文件文件路径
redis-server /usr/local/etc/redis.conf
# 客户端连接服务器
redis-cli -h 192.168.2.252 -p 6379
# 查看redis的版本
redis-cli -v
# 如果设置了登陆密码
auth password
  • shutdown 关闭Redis服务器
$src/redis-cli
redis 127.0.0.1:6379> shutdown

全局命令

参考地址
http://redisdoc.com/index.html

  • 键操作
# 查看所有键
keys *
# 键总数
dbsize
# 检查键是否存在,1是存在,0是不存在
exists key
# 返回 key 所关联的字符串值,如果 key 不存在那么返回特殊值 nil 。
get key
# 删除键,删除给定的一个或多个 key ,不存在的 key 会被忽略。
del key [ key ... ]
# 过期键
expire key seconds
# 键的数据类型
type key

  • 服务器管理
# 测试服务器是否联通
ping
echo
# 选择一个数据库
select 1
# 退出当前客户端进程
quit
# 列出全部参数
info
# 只列出内存相关部分
info info memory
# 列出客户端
client list
# 命令监控
monitor
# 清除当前数据库中的数据,默认是0号数据库
flushdb
# 清除所有数据库的数据
flushshall
  • 系统参数的配置
# config 查询
config get dir
config get *

# 配置连接过期自动清除时间
config set timeout 30

# 将配置写入到redis.conf
config rewrite

redis数据类型及操作

string

# 设置一个值
set mykey somevalue
# 查
get mykey
# 给key设置一个新值value,同时返回上一个值
getset count 2

list类型及操作

lpush  list 'word'
lrange list

hash

# 获得值
hget key field
# 计算field的个数
hlen key
# 获得所有的field
hkeys key

事务

# 开启事务
multi
# 提交
exec
# 取消
discard

set的操作

# 添加
sadd myset "woeu" 
# 查看
smembers myset 
# 指定删除
srem myset woeu
# 随机删除,并返回删除元素
spop myset
# 返回一个与第一个交集的差集
sdiff myset1 myset2
# myset1与myset2的差集存储到myset4
sdiffstore myset4 myset1 myset2

setnx

更多命令可查看:
https://blog.csdn.net/chenlushun12/article/details/79356989

发布订阅

# 向channel发布message1
publish channel message1
# 订阅消息
subscribe channel
# 取消订阅
unsubscribe channel

spring 提供的API

//向redis里存入数据和设置缓存时间 
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);
 //val做-1操作 
stringRedisTemplate.boundValueOps("test").increment(-1);
//根据key获取缓存中的val  
stringRedisTemplate.opsForValue().get("test");
 //val +1  
stringRedisTemplate.boundValueOps("test").increment(1);
//根据key获取过期时间
stringRedisTemplate.getExpire("test");
//根据key获取过期时间并换算成指定单位  
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS);
//根据key删除缓存  
stringRedisTemplate.delete("test");
//检查key是否存在,返回boolean值  
stringRedisTemplate.hasKey("546545");
//向指定key中存放set集合
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");
//设置过期时间  
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);
//根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().isMember("red_123", "1");
//根据key获取set集合  
stringRedisTemplate.opsForSet().members("red_123");

分布式锁

先看几个命令:

setnx key value 

当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。

getset key value

将给定 key 的值设为 value ,并返回 key 的旧值 (old value),当 key 存在但不是字符串类型时,返回一个错误,当key不存在时,返回nil。

主从复制

# 建立复制
127.0.0.1:6379> slaveof 192.168.10.151 7777
OK
# 断开复制
127.0.0.1:6379> slaveof no one
OK

slave连上去,master会生成一个rdb文件,slave进行重演。
复制的过程当中,如果数据比较大,比如有40GB的数据,就会很慢,可能需要30、40s不能提供服务。这种情况我们是不能接受的。

集群

参考文档

http://redisdoc.com/index.html
redis配置参数博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值