Redis常用命令

Redis集群搭建    redis持久化 RDB & AOF

 

值的五大数据类型

 

1.String   2.set   3.list   4.hash   5.zset

有关键操作的命令

 

1.keys  *

  • * 查询当前库的所有键

 

2.exists  <key>

  • 判断某个键是否存在

 

3.type  <key>   

  • 查看键的类型

 

4.del  <key>

  • 删除某个键

 

5.expire   <key>   <seconds>

  • 为键值设置过期时间,单位秒。

 

6.ttl   <key>

  • 查看还有多少秒过期,-1表示永不过期,-2表示已过期

 

7.move   <key>  <db>

  • 把键移动到另一个库下

 

8.dbsize

  •  查看当前数据库的key的数量

 

9.flushdb

  • 清空当前库

 

10.flushall

  • 通杀全部库

 

 

String类型

String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

 

String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

     二进制安全指存储一致

     

String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

 

String类型的值的操作命令

 

1.get   <key>

  • 查询对应键值

 

2.set   <key>  <value>

  • 添加键值对

 

3.append  <key>  <value>

  • 将给定的<value> 追加到原值的末尾

 

4.strlen  <key>

  • 获得值的长度

 

5.setnx  <key>  <value>

  • 只有在 key 不存在时设置 key 的值

 

6.incr  <key>

  • 将 key 中储存的数字值增1
  • 只能对数字值操作,如果为空,新增值为1

 

7.decr  <key>

  • 将 key 中储存的数字值减1
  • 只能对数字值操作,如果为空,新增值为-1

 

8.incrby / decrby  <key>  <步长>

  • 将 key 中储存的数字值增减。自定义步长。

 

 

9.mset <key1> <value1> <key2> <value2> ……

  • 同时设置一个或多个 key-value对

 

10.mget <key1> <key2> <key3>……

  • 同时获取一个或多个 value

 

11.msetnx

  • 同时设置一个或多个key-value对,当且仅当所有给定key都不存在时

 

12.getrange <key> <起始位置> <结束位置>

  • 获得值的范围,类似java中的substring
  • 闭区间

 

13.setrange <key> <起始位置> <value>

  • 用<value>覆写<key>所存储的字符串值,从<起始位置>开始

 

14.setex <key> <过期时间> <value>

  • 设置键值的同时,设置过期时间,单位为    秒

 

15.getset <key> <value>

  • 以新换旧,设置新值同时获得旧值

 

List类型

 

单键多值

 

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

 

它的底层实际是个双向链表对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

 

 

List类型的值的操作命令

 

1.lpush    /    rpush <key> <value1> <value2> <value3> ……

  • 从左边  /   右边插入一个或多个值

 

2.lpop    /    rpop  <key>

  • 从左边   /    右边吐出一个值
  • 值在健在,值亡键亡
  • 吐完之后,键值对就不再存在,相当于删除

 

3.rpoplpush   <key1>     <key2>

  • 从  <key1>   列表右边吐出一个值,插到   <key2>   列表左边

例如

lpush k1   1 2 3 4 5 6

rpush k2   7 8 9 10 11 

 

rpoplpush k1 k2

     结果是

        k1  2 3 4 5 6

        k2  1 7 8 9 10 11

 

4.lrange <key> <start> <end>

  • 按照索引下标获得元素(从左到右)

 

5.lindex <key> <index>

  • 按照索引下标获得元素(从左到右)

 

6.llen <key>

  • 获得列表长度

 

7.linsert <key> before <value> <newvalue>

  • 在    <value>    的后面插入  <newvalue>   插入值

 

8.lrem <key> <n> <value>

  • 从左边删除n个value(从左到右)

 

 

 

 

Set类型

Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。

 

Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。

 

 

Set类型的值的操作命令

 

1.sadd <key> <value1> <value2> ……

  • 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。

 

2.smembers <key>

  • 取出该集合所有的值

 

3.sismember <key> <value>

  • 判断集合  <key>    是否为含有该  <value>   值
  • 有    返回1
  • 无    返回0

 

4.scard <key>

  • 返回该集合的元素个数

 

5.srem <key> <value1> <value2> ……

  • 删除集合中的某个元素

 

6.spop <key>

  • 随机从集合只能够吐出一个值

 

7.srandmember <key> <n>

  • 随机从集合中取出   n    个值
  • 不会从集合删除

 

8.smove <key1> <key2> <value>

  • 将key1集合中的    <value>      值移到   key2   集合中

例如

sadd k1 1 2 3 4

sadd k2 3 4 5 6

 

sinter k1 k2

 

     结果是

          3 4

 

 

9.sinter <key1> <key2>

  • 返回两个集合的交集元素

例如

sadd k1 1 2 3 4

sadd k2 3 4 5 6

 

sunion k1 k2

 

     结果是

          1 2 3 4 5 6

 

 

10.sunion  <key1> <key2>

  • 返回两个集合的并集元素

 

11.sdiff <key1> <key2>

  • 返回两个集合的差集

例如

sadd k1 1 2 3 4

sadd k2 3 4 5 6

 

sinter k1 k2

 

     结果是

          3 4

 

 

sunion k1 k2

 

     结果是

          1 2 3 4 5 6

 

 

sdiff k1 k2

     

     结果是

          1 2

 

 

 

 

Hash类型

 

Redis  hash 是一个键值对集合。

 

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

 

类似Java里面的Map<String,Object>

 

 

用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2种存储方式:

 

1.每次修改用户的某个属性需要,先反序列化改好后再序列化回去。开销较大。

 

 

 

 

 

2.用户ID数据冗余

 

 

 

 

 

通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题

 

 

 

Hash类型的值的操作命令

 

1.hset <key> <field> <value>

  • 给  <key>   集合中的  <field>   键 赋值   <value>

 

2.hget <key1>  <field>

  •  从<key1>集合<field> 取出 value 

 

3.hmset <key1>  <field1> <value1> <field2> <value2>...

  •  批量设置hash的值

 

4.hmget <key1>  <field1>  <field2> ...

  •  批量设置hash的值
  •  

5.hexists key  <field>

  • 查看哈希表 key 中,给定域 field 是否存在。

 

6.hkeys <key>

  • 列出该hash集合的所有field  

 

7.hvals <key>

  • 列出该hash集合的所有value

 

8.hincrby <key> <field>  <increment>

  • 为哈希表 key 中的域 field 的值加上增量 increment

 

9.hsetnx <key>  <field> <value>

  • 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在

 

 

Zset类型   (sorted set)

 

     也是一个Set集合,但是增加了score属性,可以按照score 排序

 

     评分score

 

 Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的没有成员都关联了一个评分(score) ,这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。

 

集合的成员是唯一的,但是评分可以是重复了 。      

 

因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

 

Zset的操作命令

 

1.zadd <key> <score1> <value1> <score2> <value2> ……

  • 将一个或多个member元素及其score值加入到有序集当中

 

2.zrange <key>  <start> <stop>  [WITHSCORES]

  • 返回有序集 key 中,下标在<start>   <stop>之间的元素
  • 带WITHSCORES,可以让分数一起和值返回到结果集。

 

 

3.zrangebyscore key min max [WITHSCORES][limit offset count]

  • 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
  • 有序集成员按 score 值递增(从小到大)次序排列。

 

4.zrevrangebyscore key max min [withscores] [limit offset count]

  • 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
  • 有序集成员按 score 值递增(从大到小)次序排列。

 

5.zincrby <key> <increment> <value>

  • 为元素的score加上增量

 

6.zrem <key> <value> 

  • 删除该集合下,指定值的元素

 

7. zcount <key>  <min>  <max>

  • 统计该集合,分数区间内的元素个数

 

8.zcard <key>

  • 获取集合中元素个数

 

9.zrank <key>  <value>

  • 返回该值在集合中的排名,从0开始

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值