Redis使用的是自己构建的简单动态字符串(SDS)[simple dynamic string,SDS]的抽象类型,并将SDS用做Redis的默认字符串表示
redis> SET msg "yosha" Ok
redis的Key-Value的存储方式
key是一个字符串对象,对象的底层实现是一个保存着字符串"msg"的SDS value也是一个字符串对象,对象的底层实现是一个保存着字符串"hello"的SDS
SDS除了用来保存数据库中的字符串值之外,还被用作缓冲区(Buffer):AOF模块中的AOF缓冲区
基本数据类型
- 字符串命令:GET SET DEL - 列表:一个列表结构可以有序地存储多个字符串 LPUSH RPUSH 表示元素推入列表的左端和右端 LPOP RPOP分别从列表的左端和右端弹出元素,被弹出的元素不再属于列表 LINDEX用于获取列表在给定位置的上一个元素 LRANGE用于获取列表在给定范围上的所有元素 - 集合:列表可以存储多个相同的字符串,集合则通过散列表来保证自己存储的每个字符串都是各不相同的(这些散列表只有键,但没有与键相关联的值) redis的集合使用的是无序方式存储元素 SADD:将元素添加到集合 redis> sadd fengjr "6666" (integer) 1 SREM:从集合移除元素,命令会返回被移除元素的数量 SMEMBERS:获取集合包含的所有元素将得到一个由元素组成的序列 SISMEMBER:快速检查一个元素是否已经存在于集合中 - 散列:redis的散列可以存储多个键值对之间的映射。和字符串一样,散列存储的值既可以是字符串,又可以是数字值,并且用户同样可以对散列存储的数字值执行自增操作或者自减操作 HSET:在散列里面关联起给定的键值对 hset hash-key sub-key1 value1 hset hash-key sub-key2 value2 例子: redis> HSET myhash field1 123 redis> HSET myhash name kkk 返回值为1表示给定的键不存在于散列里面,添加成功 返回值为0表示给定的键存在于散列里面,添加失败 HDEL:如果给定键存在于散列里面,删除这个键 例子: redis> HDEL myhash name (integer) 1 删除成功 HGET:从散列里面获取某个键的值 HGETALL:获取散列包含的所有键值对 例子: redis> HGETALL myhash 1) "filed1" 2) "foo" 3) "field1" 4) "123" HINCRBY:对散列存储的值执行自增操作 HINCRBY key field icrement 例子: redis>HINCRBY myhash field1 123 (integer) 246 - 有序集合:和散列一样都用于存储键值对:有序集合的键被称为成员(member),每个成员都是各不相同的;而有序集合的值则被称为分值(score),分值必须为浮点数 ZADD:将一个带有给定分值的成员添加到有序集合里面 例子: redis>zadd zset-key 728 member ZRANGE:根据元素在有序排列中所处的位置,从有序集合里面获取多个元素 ZRANGEBYSCORE:获取有序集合在给定分值范围内的所有元素 ZREM:如果给定成员存在于有序集合,那么移除这个成员 ZINCRBY:给有序集合成员的分值执行自增操作 例子: ZINCRBY key increment member redis>ZINCRBY zset-key 123 member1 ZSCORE:检查记录的有序集合的值 例子: ZSCORE key member redis>ZSCORE zset-key member1 "851"