redis 和 mongo 入门
redis
基础类型
string
redis 的 字符串类型,可以支持 string
,number
,bitmap
等操作。
- string 类型
string 类型支持的操作有 STRLEN
获取字符串长度。APPEND
字符串拼接等。 当然所有的数据类型都支持基础操作 set
get
。
1 | 127.0.0.1:6379> set string1 "hello word" |
redis string 中的长度都是指字节长度。如果字符串中含有中文字符,可能会出现一个字符含有多个字节的情况。
单个汉字utf8
编码一般占3个字节、
1 | 127.0.0.1:6379> set str1 中国 |
- number 类型
number 类型额外还支持对存入数值的加减操作。
1 | 127.0.0.1:6379> set num1 1 |
- bitmap 类型
是一种二进制类型的字符串。二进制字符特点就是速度快。设置方法是通过redis-cli
运行指令SERBIT key offset value
这样的方式,
其中 offset 字符的起始位置。value 是0 或 1
。
1 | 127.0.0.1:6379> SETBIT k1 1 1 |
BITCOUNT
统计 key 中字符规定范围的字节内部有多少个1 BITCONUT key 字节起始位置 字节结束位置
。
SETBIT
操作的时候当offset的值超过一字节(8位,7)的时候。会自动拼接上下一个字节。
1 | 127.0.0.1:6379> BITCOUNT k1 0 0 |
redis-cli
指令help @string
可查看 string 类型的所有操作。
1 | 127.0.0.1:6379> help @string |
List
环形链表。同向取用数据等于栈,异向取用数据等于队列的操作。
1 | 127.0.0.1:6379> help @list |
Hash
redis 常用的 hash map 操作。多用于聚合数据。
1 | 127.0.0.1:6379> help @hash |
Set
无序的去重集合。
1 | 127.0.0.1:6379> help @set |
SortedSet 有序集合
主要应用,分页和排行榜。
1 | 127.0.0.1:6379> zadd z1 3.2 apple 1.2 banana 4.3 orange |
底层实现。存入的数据量少于 128 或者 当个元素小于 64byte的时候采用 zipList
实现。超过了使用 skipList
实现。
1 | 127.0.0.1:6379> help @sorted_set |
持久化
分布式
- 强一致性
请求到达 redis 集群时。redis 必须写完所有的机器,才能给客户端返回。但是只要有一个机器不可用了就会导致整个集群无法正常工作。
强一致性一定程度上会影响服务的可用性。
- 弱一致性
- 最终一致性
最终一致性是指 redis 将数据的操作成功写入某个黑盒程序后,返回给客户端,其他的机器通过消费黑盒中的数据来达到和主机器一样的数据。实现最终一致性。