redis学习(二)redis数据类型 Date Types
redis是一种高级的key:value存储系统,其中value支持五种数据类型:
- 字符串(Strings)
- 列表(Lists)
- 集合(Sets)
- 哈希(Hashes)
- 有序集合(Sorted sets)
关于数据的操作要在cli状态下进行。
字符串(Strings)
字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据,例如: 一张JPEG格式的图片或者一个序列化的Ruby对象。
一个字符串类型的值最多能存储512M字节的内容。
demo1:最开始的例子
127.0.0.1:6379> SET name "Yco" OK 127.0.0.1:6379> GET name "Yco"
SET key value
命令用于设置一对字符串型的key-valueGET key
命令用于取值
demo2:遇到数值操作,redis会将字符串类型转换成数值
127.0.0.1:6379> SET num "6" OK 127.0.0.1:6379> INCR num (integer) 7 127.0.0.1:6379> GET num "7" 127.0.0.1:6379> DECR num (integer) 6 127.0.0.1:6379> GET num "6"
INCR key
命令,用于自增操作DECR key
命令,用于自减操作INCR
等命令是原子的,可以利用它们来实现原子计数效果。
列表(Lists)
Redis列表是简单的字符串列表,按照插入顺序排序。 你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
demo3:lists的简单操作
//在list最左端插入 aa 127.0.0.1:6379> LPUSH alist "a" (integer) 1 //在list最右端插入 b 127.0.0.1:6379> RPUSH alist "b" (integer) 2 //在list最左端插入 c 127.0.0.1:6379> LPUSH alist "c" (integer) 3 //遍历list中下标0到1得元素 127.0.0.1:6379> LRANGE alist 0 1 1) "c" 2) "a" //遍历list中下标0到倒数第1个元素 127.0.0.1:6379> LRANGE alist 0 -1 1) "c" 2) "a" 3) "b"
LPUSH
命令,插入一个新元素到列表头部RPUSH
命令,插入一个新元素到列表尾部LRANGE key start end
命令,从start下标开始,end下标结束,遍历key。(end为负数时,遍历倒数到倒数第end个元素为止)
当对一个空key执行其中某个命令时,将会创建一个新列表。 类似的,如果一个操作要清空列表,那么key会从对应的key空间删除。(不需要新建,或者删除列表)
集合(Sets)
Redis集合是一个无序的字符串合集。你可以以O(1)的时间复杂度完成添加,删除以及测试元素是否存在的操作。
Redis集合有着不允许相同成员存在的优秀特性。向集合中多次添加同一元素,在集合中最终只会存在一个此元素。实际上这就意味着,在添加元素前,你并不需要事先进行检验此元素是否已经存在的操作。
demo4:sets的简单操作
//向set中添加元素 127.0.0.1:6379> SADD aset "ykx" (integer) 1 127.0.0.1:6379> SADD aset "Yco" (integer) 1 //列出set所有元素 127.0.0.1:6379> SMEMBERS aset 1) "ykx" 2) "Yco" //判断元素是否在set中,返回1存在 127.0.0.1:6379> SISMEMBER aset "ykx" (integer) 1 //新建另一个集合 127.0.0.1:6379> SADD otherset "1" (integer) 1 127.0.0.1:6379> SADD otherset "2" (integer) 1 //合并集合 127.0.0.1:6379> SUNION aset otherset 1) "2" 2) "1" 3) "ykx" 4) "Yco"
SADD
命令,向集合中添加一个元素。SMEMBERS
命令,遍历集合。SISMEMBER
命令,判断一个元素是否在集合中,存在返回1,否则返回0。SUNION
命令,合并两个集合
哈希(Hashes)
Redis Hashes是字符串字段和字符串值之间的映射,所以它们是完美的表示对象(eg:一个有名,姓,年龄等属性的用户)的数据类型。
demo5:hashes的简单操作
//新建一个hash 127.0.0.1:6379> HMSET user:001 username "Yco" password "123456" age "20" OK //列出hash内容 127.0.0.1:6379> HGETALL user:001 1) "username" 2) "Yco" 3) "password" 4) "123456" 5) "age" 6) "20" //更改hash内容 127.0.0.1:6379> HSET user:001 age "21" (integer) 0
HMSET
命令,新建hash并赋值。HGETALL
命令,列出hash内容。HSET
命令,更改hash内容。
有序集合(Sorted sets)
Redis有序集合和Redis集合类似,是不包含相同字符串的合集。它们的差别是,每个有序集合的成员都关联着一个权值(score),这个权值用于把有序集合中的成员按最低分到最高分排列
demo6:有序集合的基本操作
127.0.0.1:6379> ZADD zset 1 "ykx" (integer) 1 127.0.0.1:6379> ZADD zset 2 "Yco" (integer) 1 127.0.0.1:6379> ZRANGE zset 0 1 1) "ykx" 2) "Yco"
ZADD
命令,向有序集合中添加一个元素ZRANGE
命令,遍历有序集合
总结:
基本的指令还是挺好记的,指令很人性化,指令与什么有关,指令就以什么字母开头。