redis4学习
2019-03-28 19:05:29 1 举报
AI智能生成
redis学习
作者其他创作
大纲/内容
事务
概念
事务是一个单独的隔离操作:一个事务中的命令逐一按顺序执行
事务是一个原子性操作:原子性就意味着一个事务中的所有命令要么全部执行,要么全都不执行
命令
multi
exec
watch
unwatch
discard
订阅/发布
命令
subscribe
publish
psubscribe
结构
pubsub_channels
pubsub_patterns
内置数据结构
命令操作实现文件
t_string.c
t_list.c
t_set.c
t_zset.c
t_hash.c
redisDb
结构体定义
dict *dict
dict *expires
dict *blocking_keys
dict *ready_keys
dict *watched_keys
int id
long long avg_ttl
redisObject
结构体定义
unsigned type
OBJ_LIST
OBJ_STRING
OBJ_SET
OBJ_ZSET
OBJ_HASH
unsigned encoding
unsigned lru
int refcount
void *ptr
底层数据结构实现
intset
整数集合
可用于整数set数据存储
zipmap
压缩字典,通过字符串实现
sds
redis中核心字符串实现
底层字符串均以此类型存储
结构体定义:TODO
adlist
常规双向链表实现
可用于list数据存储
dict
基于HashTable的字典实现
可用于set、hash数据存储
ziplist
压缩链表,通过字符串实现
可用于list、zset数据存储
skiplist
跳跃表
可用于zset数据存储
数据持久化
RDB持久化
将数据经过压缩处理、压缩存入rdb文件
尽量使用bgsave命令,save命令会阻塞客户端
AOF持久化
将写命令操作写入aof文件
AOF缓冲区
AOF_FSYNC_EVERYSEC:每秒同步一次
AOF_FSYNC_ALWAYS:每次事件循环写操作后都执行同步
AOF_FSYNC_NO:不同步,让操作系统来决定何时同步
数据类型
String
编码方式
OBJ_ENCODING_RAW
OBJ_ENCODING_INT
常用命令
set
get
mset
mget
setex
setnx
append
incr
decr
List
编码方式
OBJ_ENCODING_ZIPLIST
OBJ_ENCODING_LINKEDLIST
常用命令
lpush
rpush
lpop
rpop
lrange
llen
Set
编码方式
OBJ_ENCODING_HT
OBJ_ENCODING_INTSET
常用命令
sadd
srem
smembers
sismember
scard
sinter
sunion
ZSet
编码方式
OBJ_ENCODING_ZIPLIST
OBJ_ENCODING_SKIPLIST
常用命令
zadd
zrange
zrevrange
zrem
zcard
zcount
Hash
编码方式
OBJ_ENCODING_HT
OBJ_ENCODING_ZIPLIST
常用命令
hset
hmset
hsetnx
hget
hmget
hexists
hlen
hdel
0 条评论
下一页