玖叶教程网

前端编程开发入门

redis基本数据结构(一、redis的数据结构一般分为哪几种?)

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"

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言