Redis数据类型、keys命令

Redis的数据类型包括:String、List、Set、sorted Set、hash这样5种类型。
1. String
  redis中没有使用C语言的字符串表示,而是自定义一个数据结构叫SDS(simple dynamic string)即简单动态字符串。打开下载的redis源码包,找到src下的sds.h文件查看sds源码:

struct sdshdr {
    //字符串长度
    unsigned int len;
    //buf数组中未使用的字节数量
    unsigned int free;
    //用于保存字符串
    char buf[];
};

  c语言对字符串的存储是使用字符数组,遇到’\0’字符则认为字符串结束,redis的字符串可以存储任何类型的数据,因为任何类型数据都可以表示成二进制,sds结构中的char buf[]就是存储了二进制数据。redis的字符串是二进制安全的,什么是二进制安全?简单理解就是存入什么数据取出的还是什么数据。redis中的sds不像c语言处理字符串那样遇到’\0’字符则认证字符串结束,它不会对存储进去的二进制数据进行处理,存入什么数据取出还是什么数据。String即最为基础的数据存储类型。可以存储字符串和二进制数据,在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

命令      描述              例子
Set         赋值               SET key value
Get         获取值             GET key
APPEND      追加字符串          APPEND key value
DECR        减少值             DECR key
INCR        增加值             INCR key
DECRBY      设置减少数值的步长   DECRBY key decrement
INCRBY      设置增加数值的步长   INCRBY key increment
GETSET      先获取值再赋值,原子性操作   GETSET key value
STRLEN      返回key的长度        STRLEN key
SETEX       设置key在服务器中存在的时间 SETEX key seconds value
SETNX       Key不存在设置值,否则不做操作    SETNX key value
SETRANGE    字符串替换           SETRANGE key start "value"
GETRANGE    截取字符串           GETRANGE key start end
SETBIT      设置二进制的值     SETBIT key offset value
GETBIT      获取二进制的值     GETBIT key offset
MGET        返回多个key的值       MGET key [key ...]
MSET        设置多个keyvalue   MSET key value [key value ...]
MSETNX      Key不存在设置多个keyvalue值,否则不做操作 MSETNX key value  [key value ...]

2. List
  列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。List中可以包含的最大元素数量是4294967295。

命令      描述                  例子
LPUSH       在list头部添加多个值    LPUSH key value [value ...]
LPUSHX      Key存在则添加值,否则不做操作    LPUSHX key value
LRANGE      遍历list中key数据    LRANGE key start stop
LPOP        从头部弹出key中的值 LPOP key
LLEN        返回key的长度    LLEN key
LREM        删除前面几个值等于某值得元素  LREM key count value
LSET        给下标赋值   LSET key value
LINDEX      返回下标中的值 LINDEX key index
LTRIM       截取list中的值   LTRIM key start stop
LINSERT     在某个值的前面或者后面插入值  LINSERT key BEFORE|AFTER pivot value
RPUSH       在list尾部添加多个值    RPUSH key value [value ...]
RPUSHX      在list尾部添加单个值    RPUSHX key value
RPOP key    从尾部弹出值  RPOP key
RPOPLPUSH   从一个集合尾部弹出值插入到里一个集合的头部   RPOPLPUSH source destination

3. Set
  Set类型看作为没有排序的字符集合,Set集合中不允许出现重复的元素,redis可以在服务器端完成多个Sets之间的计算操作,如unions、intersections和differences。这些操作均在服务端完成,因此效率极高,而且也节省了大量的网络IO开销。

命令      描述          例子
SADD        添加值 SADD key member [member ...]
SMEMBERS    遍历集合    SMEMBERS key
SCARD       获取key的成员数量  SCARD key
SISMEMBER   判断成员是否存在    SISMEMBER key member
Spop        随机弹出值   Spop key
SREM        删除指定的成员 SREM key member [member ...]
SRANDMEMBER 随机返回成员,不删除原值    SRANDMEMBER key
SMOVE       移动一个集合的成员到另一个集合 SMOVE source destination member
SDIFF       求集合差集   SDIFF key [key ...]
SDIFFSTORE  集合中的差集存储到新集合中   SDIFFSTORE destination key [key ...]
SINTER      求集合交集   SINTER key [key ...]
SINTERSTORE 将集合交集存储到新集合 SINTERSTORE destination key [key ...]
SUNION      求集合并集   SUNION key [key ...]
SUNIONSTORE 将集合的并集存储到新集合    SUNIONSTORE destination key [key ...]

4. sorted Set
  在集合类型的基础上有序集合类型为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。
在某些方面有序集合和列表类型有些相似。
  1、二者都是有序的。
  2、二者都可以获得某一范围的元素。
但是,二者有着很大区别:
  1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。
  2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。
  3、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现)
  4、有序集合要比列表类型更耗内存。

命令          描述          例子
ZADD            添加排序成员  ZADD key score member [score] [member]
ZCARD           获取成员数量  ZCARD key
ZCOUNT          获取分数在min和max之间成员有多少个    ZCOUNT key min max
ZINCRBY         增加指定成员的分数   ZINCRBY key increment member
ZRANGE          遍历成员以及分数    ZRANGE key start stop [WITHSCORES]
ZRANGEBYSCORE   返回分数在minmax之间的成员和分数    ZRANGEBYSCORE key min max [WITHSCORES]
ZRANK           返回成员的下标 ZRANK key member
ZREM            删除指定成员  ZREM key member [member ...]
ZREVRANGE       遍历成员以及分数从大到小    ZREVRANGE key start stop [WITHSCORES]
ZREVRANK        返回成员下标顺序从大到小    ZREVRANK key member
ZSCORE          获取指定成员的分数   ZSCORE key member
ZREVRANGEBYSCORE获取成员以及分数按照从高到低  ZREVRANGEBYSCORE key max min [WITHSCORES]
ZREMRANGEBYRANK 删除下标之间的数据   ZREMRANGEBYRANK key start stop
ZREMRANGEBYSCORE删除分数在minmax中的成员    ZREMRANGEBYSCORE key min max

5. hash
  hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。

命令          描述                  例子
HSET            给key中filed字段赋值  HSET key field value
HGET            获取key中filed的值   HGET key field
HEXISTS         判断filed是否存在 01    HEXISTS key field
HLEN            获取key 的长度   HLEN key
HDEL            删除file字段    HDEL key field [field ...]
HSETNX          如果filed不存赋值否则不做操作   HSETNX key field value
HINCRBY         给filed增加步长  HINCRBY key field increment
HGETALL         获取所有的filed和value    HGETALL key
HKEYS           获取key   HKEYS key
HVALS           获取value HVALS key
HMGET           获取所有filed字段的值   HMGET key field [field ...]
HMSET           设置多个filed字段value    HMSET key field value [field value ...]

6. keys命令

命令          描述          例子
KEYS            获取所有的key    KEYS pattern
Del             删除指定的key    DEL key [key ...]
EXISTS          判断key是否存在   EXISTS key
MOVE            移动一个key到另一个库中   MOVE key db
RENAME          给key从新命名    RENAME key newkey
RENAMENX        修改key的名字    RENAMENX key newkey
PERSIST         持久化key  PERSIST key
EXPIRE          设置key存活时间   EXPIRE key seconds
EXPIREAT        设置key存活时间(年月日)  EXPIREAT key timestamp
TTL             实时查看key存活时间 TTL key
RANDOMKEY       随机返回一个key   RANDOMKEY
TYPE            查看key的中value数据类型    TYPE key
SELECT          进入指定库   SELECT NUM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值