Redis 五大数据类型常用命令解释

Redis 五大数据类型

String(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

Hash(哈希,类似java里的Map)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map

List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。它的底层实际是个链表

Set(集合)
Redis的Set是string类型的无序集合。它是通过HashTable实现实现的,

Zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

Redis 键(key)

常用命令 案例

      keys * 查询所有key
     exists key的名字,判断某个key是否存在
     move key db   --->当前库就没有了,被移除了
     expire key 秒钟:为给定的key设置过期时间
     ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
     type key 查看你的key是什么类型

Redis字符串(String)

- 单值单value

常用命令 案例

 set(设置值)
 get(根据键获取值)
 del(删除键值对)
 append(根据键给指定的值追加)
 strlen(获取value值的 长度)
 Incr(根据键给指定为value值相加1(一定要是数字才能进行加减))
 decr(根据键给指定的value值相减1(一定要是数字才能进行加减))
 incrby (根据键给指定value指定增量进行相加(一定要是数字才能进行加减))
 decrby(根据键给指定value指定增量进行相减(一定要是数字才能进行加减))
 getrange(根据键 获取value指定区间长度的字符串(0 到 -1 表示获取全部))
 setrange(根据键设置指定区间范围内的值(给定开始的位置,和设置的值))
 setex(根据键设置键的过期时间(set with expire))
 setnx(只有在 key 不存在时设置 key 的值(set if not exist))
 mset(同时设置一个或多个 key-value 对)
 mget(获取所有(一个或多个)给定 key 的值。)
 msetnx(同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。)
 get/set(先get再set)

Redis列表(List)

- 单值多value

常见命令

   lpush(添加一个元素到列表的头部(左边)(如栈结构模式,先进后出))
   rpush(添加一个元素到列表的头部(右边)(如队列模式,先进先出))
   lrange (根据指定的键将指定区间范围的值取出)
   lpop(根据键取出左边的第一个元素)
   rpop (根据键取出右边的第一个元素)
   lindex,(通过索引获取列表中的元素 lindex key index (按照索引下标获得元素(从上到下))
   llen (根据键取出value的长度)
   lrem key count value (根据指定的键指定value个数,删除value)
   ltrim key (开始index 结束index,截取指定范围的值后再赋值给key)
   rpoplpush 源列表 目的列表(移除列表的最后一个元素,并将该元素添加到另一个列表并返回)
   lset key index value(根据键和指定index索引位置插入value值)
   linsert key  before (根据键指定pivot值之前插入value值)
   after 值1 值2(根据键指定pivot值之后插入value值)

性能总结
它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了。
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。
Redis集合(Set)
常用

- 单值多value

常用命令案例

sadd(添加元素,sadd key value,value....)
smembers(根据键来查询所有value)
sismember(根据键和值来查询元素是否存在,存在返回1,不存在返回0)
scard(获取集合里面的元素个数)
srem key value (根据键和值来删除集合中元素)
srandmember key count (根据键和个数,来随机取出元素(随机出几个数))
spop key count (根据键和count数来指定元素随机出栈(随机出栈))
smove key1 key2 value(指定key1键和key2键和value值附给key1键中作为值)

数学集合类

差集:sdiff(取出两个键中不存在的元素)
交集:sinter (取出两个共同存在的元素)
并集:sunion (取出两个不重复全部元素)

Redis哈希(Hash)

- KV模式不变,但V是一个键值对
常用命令 案例

 hset(根据键添加value,(value里面是包含的一个key和value))
 hget (根据键和vlaue值中的key来获取value值)
 hmset(根据指定的键 设置value中的键值对)(HMSET hash2 id 1 name admin age 22)
 hmget (根据键和value中键来获取指定的值)(HMGET hash2 id name age)
 hgetall(根据键来查询所有的value中的键值对)
 hdel(根键和vlue中的键来删除指定的vlaue值)
 hlen(根据键来获取vlaue个数)
 hexists key field (根据键和value中的键来判断是否存在该value)
 hkeys (根据键获取value中的所有键)
 hvals  (根据键获取value中的所有值)
 hincrby (根据键和value中的键和相加数,(前提该属性必须为Integer))
 hincrbyfloat(根据键和value中的键和相加数,(前提该属性必须为Integer或者浮点数))
 hsetnx (根据键和value中的键设置值(不存在赋值,存在了无效。))

Redis有序集合Zset(sorted set)

注释:

在set基础上,加一个score值。 之前set是k1 v1 v2 v3, 现在zset是k1 score1 v1 score2 v2

常用命令 案例

 zadd (根据键添加value(value中带一个score分数)(ZADD zset1 60 v1 70 v2 80 v3 90 v4))
 zrange (根据键和指定区间获取指定的value值)
 zrange start stop Withscores (根据键和指定区间和Withscores获取指定的value中的score和value值)
 zrangebyscore key 开始score 结束score (使用(为大于号,大于score取出值)
 【ZRANGEBYSCORE zset1 (60 80) withscores 】【ZRANGEBYSCORE zset1 60 80) withscores】 
 zrem key 某score下对应的value值,作用是删除元素 (根据键和值删除)
 zcard (根据键查询value个数)
 zcount key score区间 (获取分数区间内元素个数,zcount key 开始分数区间 结束分数区间)
 zrank key values值,作用是获得下标值(获取value在zset中的下标位置)
 zscore key 对应值,获得分数
 zrevrank key values值,作用是逆序获得下标值
 zrevrange (根据键和指定区间获取分数和值)[ZRANGE zset1 0 -1 withscores]
 zrevrangebyscore  key 结束score 开始score 【zrevrangebyscore zset1 90 60 withscores 分数是反着来的】

你可能感兴趣的:(Redis)