Redis使用对象来表示数据库中的键和值,Redis的数据库中新创建一个键值对时,至少会创建两个对象,一个对象用作键值对的键(键对象),另一个对象用作键值对的值(值对象)。
对于Redis数据库保存的键值对来说,键总是一个字符串对象,而值可以是字符串对象、列表对象、哈希对象、集合对象或者有序集合对象的其中一种.
数据库键为“字符串键”时,指的是“这个数据库键所对应的值为字符串对象”;
称呼一个键为“列表键”时,我们指的是“这个数据库键所对应的值为列表对象”
一.String
键都是字符串类型,字符串类型的值可以是简单的字符串、复杂的字符串(json\xml)、数字(整数、浮点数)、二进制(图片、音屏、视频),但是值最大不能超过512MB
1.set设置值
2.get获取键的值,不存在返回nil
3.exists判断key是否存在
key存在返回1
key不存在则返回0
4.append追加值
若key 存在,在value后直接加
若key不存在,直接输出加上的值
5.strlen
获取key存在的value长度,若存在直接返回长度,若不存在直接返回0
6.incr key自增1
key存在直接在value的基础上加1
key不存在直接加1
若是其他类型(不是整数)则会报错(error) ERR value is not an integer or out of range
7.decr key
自减一,与incr类似
8.del
9.setex
设置秒级过期时间 setex key seconds value
10.setpx
设置秒豪级过期时间
10.ttl查看过期时间
11.mset批量设置值
12.mget批量获取值,有的键不存在返回nil
13.setnx,键必须不存在才可以设置成功,用于添加。可以在分布式锁使用。
14.setxx,键必须存在才可以设置成功,用于更新。
15. getset:获取旧值并设置新值,如果被设置的键并不存在于数据库,那么getset命令将返回空值作为键的旧值:
string内部编码有三种,用object encoding 可以看到使用的内部编码是什么
int :8个字节的长整型
embstr:小于等于39个字节的字符串
raw:大于39个字节的字符串
其实说句实话,我没有用过这些场景,作为一个正在学开发知识的测试人员,我现在是不太理解这段话的内容,这段话是我看书所记录:
典型使用场景:缓存功能(redis作为缓存层、mysql作为存储层、绝大部分请求的数据都是从redis获取,由于redis具有支持高并发的特性所以缓存能起到加速读写和降低后端压力的作用)、计数、共享session、限速