Redis
Linux下安装使用Redis
1. 打开/关闭redis命令
1 | redis-cli -a 123456 -p 6379 |
Redis的十大数据结构
1. String 字符串
2.List 列表
3.Hash哈希表
4.Set集合
5.ZSet redis有序集合
6.GEO 地理空间
7.HyperLogLog 基数统计
8.bitmap位图
9.bitfield位域
10.Stream流
Redis基础操作
del key 是原子的
unlink key 是非阻塞删除
redis默认是16个库,默认使用的是0号库
keepTTL
String
最常用
set、get、ttl
同时设置/获取多个键值
1 | MSET Key value [key value] |
获取指定区间范围内的值
GETRANGE k1 0 -1
1 | GETRANGE k1 0 -1 |
SETRANGE k1 xxyy
从第一位开始, 用‘xxyy’全部覆盖
数值的增减
INCR K1
表示自增1
DECR
表示自减
DECRBY k1 5
分布式锁
之前的sync/lock/unlock 只能在一个jvm中保证加锁,
setex k1 15 hello
设置 key 过期时间 value
getset
先get再set
List Redis 列表
底层是一个==双端链表==的结构,大概有40多个亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景中。
left和right都可以加入
如果键不存在,就创建一个新的连别
如果键存在,就新增内容
如果值全部被移除了,对应的键也会消失
对于两端的操作性能是很强的,对于索引下标的操作中间的节点性能就会比较差
lpush/rpush/lrange
lpop/rpop
lindex 按照索引的下标获得元素(从上至下)
llen 获取列表中元素的个数
lrem key 数字N给定值v1 (删除N个值等于V1的元素)、
删除list1里面三个值为1的元素
ltrim key 开始index 结束index ,截取指定范围内的值再赋值给key
rpoplpush 源列表 目的列表
lset key index value
linset key before /after 已有的值插入新的值
Hash()
kv键值对的结构不变,但是v是一个新的键值对
1 | Map<String , Map<Object,Object>> |
hset/hget/hmset/hmget/hgetall/hdel
1 | hset key 字段1 value1 字段2 value2 字段3 value3... |
1 | 没有什么区别 |
1 | hgetall/hdel |
hgetall类似于遍历,hdel就是删掉
hlen 获取某个key中的全部的数量
hexists key 判断在key里面的某个值的key
hkeys/hvals
罗列key和value
hincrby/hincrbyfloat
增加
hsetnx (就是set的性质
购物车
set
单个值可以有多个value ,但是每个值都不能重复
SADD 自动去重
SMEMEBERS set1遍历
集合运算
Zset(sorted set)有序集合
bitmap
HyperLogLog
GEO
Stream(redis 版本的MQ)消息中间件
MQ 包含Kafka RabbitMQ rocketmq等
先去学了MQ