redis

Posted 超霸霸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis相关的知识,希望对你有一定的参考价值。

Redis

1.Redis简介和应用场景

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xb3xbMwm-1649489883646)(file:///C:\\Users\\14508\\Documents\\Tencent Files\\1450824311\\Image\\C2C_R`BULIJVNX67W3JY8733]6.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxEBz7Y4-1649489883647)(C:\\Users\\14508\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220404235035910.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JYQCEgX4-1649489883647)(C:\\Users\\14508\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220404235221590.png)]

2.Redis基本命令

-- 添加数据
set key value
-- 查询数据
get key
-- 删除数据
del key
-- 指令帮助文档
help command
-- 群组帮助文档
help @group
-- 查询所有key
keys *

GET key
summary:功能描述
since:出现版本
group:所属群组

-- 打印日志信息
info

-- 退出
quit

3.基本数据类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KIvyKvqO-1649489883648)(C:\\Users\\14508\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220405001958955.png)]

string

-- 添加/修改多个数据
mset key1 value1 key2 value2
-- 获取多个数据
mget key1 key2
-- 获取字符串长度
strlen key
-- 追加字符串(原信息存在则追加,否则新建)
append key value

-- 设置数据增加指定范围的值
incr key  /*不能操作小数*/
incrby key increment
incrbyfloat key increment  /*能操作小数*/
-- 设置数据减少指定范围的值
decr key
decrby key increment

-- 设置数据指定生命周期
setex key seconds value
psetex key milliseconds value

-- 存储对象类型数据(表名:主键名:主键值:字段名)
set user:id:00245:fans:66
set user:id:00245:blogs:25
set user:id:00245:focus:85
set user:id:00245 id:00245,fans:66,blogs:25

hash

-- 添加数据
hset key field value
-- 获取数据
hget key field
hgetall key
-- 删除数据
hdel key field1 [field2]

-- 添加多个数据
hmset key field1 value1 field1 value1
-- 获取多个数据
hmget key field1 field2
-- 获取字段数量
hlen key
-- 获取指定字段是否存在
hexists key field

-- 获得所有字段名
hkeys key
-- 获得所有字段值
hvals key
-- 设置指定字段的数据增加
hincrby key field increment
hincrbyfloat key field increment

list

-- 添加/修改数据
lpush key value1 [value2]
rpush key value1 [value2]

-- 获取数据
lrange key start stop
lindex key index
llen key

-- 获取并移除数据
lpop key
rpop key

-- 移除指定数据
lrem key count value  /*count为删除的个数*/

-- 规定时间内获取并移除数据
blpop key1 [key2] timeout
brpop key1 [key2] timeout

set

-- 添加数据
sadd key member1 [member2]
-- 获取全部数据
smembers key
-- 删除数据
srem key member1 [member2]

-- 获取集合数据总量
scard key
-- 判断集合中是否包含指定数据
sismember key member

-- 随机获取集合中指定数量的数据
srandmember key [count]
-- 随机获取集合中的某个数据并将该数据移出集合
spop key [count]

-- 求两个集合的交、并、差集
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
-- 求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
-- 将指定数据从原始集合中移动到目标集合中
smove source destination menber

sorted_set

-- 添加数据
zadd key score1 member1 [score2 member2]
-- 获取全部数据
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
-- 删除数据
zrem key member

-- 按条件获取数据
zrangebyscore key min max [withscores] [limit]
zrevrangebyscore key min max [withscores] [limit]
-- 条件删除
zremrangebyrank key start stop
zremrangebyrank key min max

-- 获取集合数据总量
zcard key
zcount key min max
-- 集合交、并操作
zinterstore destination numkeys key
zunionstore destination numkeys key

-- 获取数据对应的索引(排名)
zrank key member
zrevrank key member
-- score值获取与修改
zscore key member
zincrby key increment member

4.key的基本操作

-- 删除指定key
del key
-- 获取key是否存在
exists key
-- 获取key的类型
type key

-- 为指定key设置有效期
expire key seconds
pexpire key milliseconds
expire key timestamp
pexpire key milliseconds-timestamp
-- 获取key的有效时间
ttl key
pttl key
-- 切换key从时效性转换为永久性
persist key

-- 查询key  /*支持正则表达式*/
keys pattern

-- 为key改名
rename key newkey
renamenx key newkey

-- 对所有key排序
sort
-- 其他key通用操作
help @generic

5.数据库基本操作

-- 切换数据库
select index
-- 退出
quit
-- 测试
ping
-- 控制台打印
echo message

-- 数据移动
move key db

-- 数据清除
dbsize
flushdb
flushall

6.jedis

// 1.连接redis
Jedis jedis = new Jedis("localhost", 6379);
// 2.操作redis
jedis.set("name", "chao");
String name = jedis.get("name");
System.out.println(name);
// 3.关闭连接
jedis.close();

7.Redis持久化

持久化的两种方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CkN4AVIQ-1649489883648)(C:\\Users\\14508\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220406195720973.png)]

RDB

RDB启动方式:
-- 手动执行一次保存操作
save
-- 后台保存操作
bgsave
-- save配置
save second changes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rj0UbxjJ-1649489883648)(C:\\Users\\14508\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220406200356039.png)]

AOF

-- 手动重写
bgrewriteaof
-- 自动重写
auto-aof-rewrite-min-size
auto-aof-rewrite-percentage

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y3A5ZwNo-1649489883649)(C:\\Users\\14508\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220406202657540.png)]

8.事务操作

-- 开启事务
multi
-- 执行事务
exec
-- 取消事务
discard

9.锁

-- 对key添加监视锁,在执行exec前如果key发生了变化则终止事务执行
watch key1 [key2]
-- 取消监视
unwatch

-- 设置一个公共锁
setnx lock-key value
-- 为锁添加时间限定
expire lock-key second
pexpire lock-key milliseconds

10.删除策略

-- 定时删除
设置一个定时器,到点立马执行删除操作
-- 惰性删除
到点了不执行删除操作,等到下次访问该数据时再删除
-- 定期删除
周期轮询redis库中的时效性数据,采用随机抽取的策略

11.Redis.conf配置

-- 设置服务器以守护进程的方式运行
daemonize yes|no
-- 绑定主机地址
bind 127.0.0.1
-- 设置服务器端口号
port 6379
-- 设置数据库数量
databases 16
-- 设置服务器以指定日志记录级别
loglevel debug|verbose|notice|warning
-- 日志记录文件名
logfile 端口号.log
-- 设置最大客户端连接数
maxclients 0
-- 客户端闲置等待最大时长
timeout 300

12.高级数据类型

# 1.Bitmaps
-- 设置一个值
setbit bits 偏移量 值
-- 获得一个值
getbit bits 偏移量
-- 对指定key按位进行交、并、非异或操作,将结果保存到destKey中
bitop op destKey key1 [key2]
# and 交
# or 并
# not 非
# xor 异或
-- 统计指定key中的数量
bitcount key [start end]

# 2.HyperLogLog
-- 添加数据
pfadd key element
-- 统计数据
pfcount key
-- 合并数据
pfmerge destKey sourceKey

# 3.GEO
-- 添加坐标点
geoadd key longitude latitude member
-- 获取坐标点
geopos key member
-- 计算坐标点距离
geodist key member1 member2 [unit]
# m 米
# km 千米

13.主从复制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WpdpeZIU-1649489883649)(C:\\Users\\14508\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220408151318597.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mdothU6L-1649489883649)(C:\\Users\\14508\\AppData\\Roaming\\Typora\\typora-user-images\\image-20220408152341432.png)]

以上是关于redis的主要内容,如果未能解决你的问题,请参考以下文章

Redis 基础 Redis 通用指令 -- key通用指令数据库通用指令(包含清除所有数据)

redis

redis

redis删除策略

Redis学习之删除策略

redis中key的通用操作