redis配置与开发
docker
1 | docker run -itd --name redis -p 6379:6379 --restart unless-stopped redis |
redis
内存数据库、kv数据库、数据结构数据库
对象类型有哪些?底层使用了哪些数据结构
- string
- int,字符串长度小于等于20且能转成整数,set teacher 1000000,type teacher,object encoding teacher
- raw,字符串长度大于44
- embstr,字符串长度小于等于44,cpu缓存中基本单位为cacheline 64字节,sdshdr头为9字节,加上’\0’,buf的最大长度为44,set teacher 1000000a,object encoding teacher
- list
- quicklist,双向循环链表
- ziplist,压缩链表
- hash,hmset role:1001 age 30 name mark sex 1, hgetall role:1001, hget role:1001 age,散列表:指针数组+数组长度+hash函数
- dict/hashtable,节点数量大于512,或字符串长度大于64
- ziplist,压缩列表,节点数量小于等于512(hash-max-ziplist-entries),且字符串长度小于等于64(hash-max-ziplist-value)
- set,sadd set 1 2 3 4 5,object encoding set,sadd set mark,object encoding set
- intset,整数数组,元素都为整数,且节点数量小于等于512(set-max-intset-entries)
- dict/hashtable,字典,元素有一个不为整数或者数量大于512
- zset,有序的结构
- skiplist,跳表,数量大于128或者有一个字符串长度大于64
- ziplist,压缩列表,节点数量小于等于128(zset-max-ziplist-entries)且字符串长度小于等于64(zset-max-ziplist-value)