Redis

Linux下安装使用Redis

image-20240331183148156

image-20240331183151856

1. 打开/关闭redis命令

1
2
3
4
redis-cli -a 123456 -p 6379
quit//退出
redis-cli -a 123456 shutdown//单实例关闭
redis-cli -a 123456 shutdown //多实例关闭

Redis的十大数据结构

1. String 字符串

2.List 列表

3.Hash哈希表

4.Set集合

5.ZSet redis有序集合

6.GEO 地理空间

7.HyperLogLog 基数统计

8.bitmap位图

9.bitfield位域

10.Stream流

Redis基础操作

image-20240331174848465

del key 是原子的

unlink key 是非阻塞删除

redis默认是16个库,默认使用的是0号库

keepTTL

image-20240331181959700

String

最常用

set、get、ttl

同时设置/获取多个键值

1
2
3
4
MSET Key value [key value]
MGET key [key ...]
mset/mget/msetnx
msetnx:不存在的时候才创建,此外,这个命令有点像事务的完整性,只有全部成功才会创建

image-20240331182938441

image-20240331183123246

获取指定区间范围内的值

GETRANGE k1 0 -1

1
2
GETRANGE k1 0 -1
// 对于string就是获得子串 类似于substring

image-20240331183849993

SETRANGE k1 xxyy

从第一位开始, 用‘xxyy’全部覆盖

image-20240331184034033

数值的增减

INCR K1

表示自增1

DECR

表示自减

DECRBY k1 5

image-20240331194044855

image-20240331194106413

分布式锁

image-20240331194142112

之前的sync/lock/unlock 只能在一个jvm中保证加锁,

image-20240331194937034

setex k1 15 hello

设置 key 过期时间 value

image-20240331195300058

getset

先get再set

List Redis 列表

底层是一个==双端链表==的结构,大概有40多个亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景中。

left和right都可以加入

如果键不存在,就创建一个新的连别

如果键存在,就新增内容

如果值全部被移除了,对应的键也会消失

对于两端的操作性能是很强的,对于索引下标的操作中间的节点性能就会比较差

lpush/rpush/lrange

image-20240331201214038

lpop/rpop

image-20240331201351026

lindex 按照索引的下标获得元素(从上至下)

image-20240331201559339

llen 获取列表中元素的个数

lrem key 数字N给定值v1 (删除N个值等于V1的元素)、

image-20240331201925609

删除list1里面三个值为1的元素

ltrim key 开始index 结束index ,截取指定范围内的值再赋值给key

image-20240331202135633

rpoplpush 源列表 目的列表

image-20240331202408163

lset key index value

image-20240331202503414

linset key before /after 已有的值插入新的值

image-20240331202637152

Hash()

kv键值对的结构不变,但是v是一个新的键值对

1
Map<String , Map<Object,Object>>

hset/hget/hmset/hmget/hgetall/hdel

1
hset key 字段1 value1 字段2 value2 字段3 value3...
image-20240331203248639
1
2
没有什么区别
hmset/hmget
image-20240331203424491
1
hgetall/hdel

hgetall类似于遍历,hdel就是删掉

image-20240331203632378

hlen 获取某个key中的全部的数量

image-20240331203807798

hexists key 判断在key里面的某个值的key

image-20240331203900374

hkeys/hvals

罗列key和value

image-20240331204001831

hincrby/hincrbyfloat

增加

image-20240331204104566

image-20240331204313354

hsetnx (就是set的性质

image-20240331204340967

image-20240331204227917

购物车

set

单个值可以有多个value ,但是每个值都不能重复

image-20240331204829210

SADD 自动去重

image-20240331205105464

SMEMEBERS set1遍历

image-20240331205144592 image-20240331205332306

集合运算

image-20240331205619186

image-20240331205705964

image-20240331205758175

Zset(sorted set)有序集合

bitmap

HyperLogLog

GEO

Stream(redis 版本的MQ)消息中间件

MQ 包含Kafka RabbitMQ rocketmq等

先去学了MQ