redis详解之常用操作命令

一、Redis是什么

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库(非关系型数据库)。

二、为什么要使用Redis

Redis优势有以下几点:

  • 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
  • 支持丰富数据类型,支持string,list,set,sorted set,hash, bitmaps, hyperloglogs 和 地理空间(geospatial);
  • 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行;
  • 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除;

三、数据类型使用场景及常用操作命令

1、操作String:

(1)使用场景:

常规key-value缓存应用。常规计数: 微博数, 粉丝数。

(2)常用操作命令:
1、设定key持有指定的字符串value,如果该key存在则进行覆盖操作,总是返回OK
set key value

2、获取key的value
如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返回null。
get key

3、先获取该key的值,然后在设置该key的值
getset key value

4、将指定的key的value原子性的递增1
如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息
incr key

5、将指定的key的value原子性的递减1
如果该key不存在,其初始值为0,在incr之后其值为-1。如果value的值不能转成整型,如hello,该操作将执   行失败并返回相应的错误信息。
decr key

6、将指定的key的value原子性增加increment
如果该key不存在,器初始值为0,在incrby之后,该值为increment。如果该值不能转成整型,如hello则失败并返回错误信息
incrby key increment

7、将指定的key的value原子性减少decrement
如果该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能    转成整型,如hello则失败并返回错误信息
decrby key decrement

8、如果该key存在,则在原有的value后追加该值;如果该key不存在,则重新创建一个key/value
append key value

2、操作List

(1)使用场景:

因为list是有序的,比较适合存储一些有序且数据相对固定的数据。如省市区表、字典表等。

(2)常用操作命令:
1、在指定的key所关联的list的头部插入所有的values
如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。
lpush key value1 value2...

2、在该list的尾部添加元素
rpush key value1、value2…

3、获取链表中从start到end的元素的值
start、end可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推… 
lrange key start end

4、仅当参数中指定的key存在时(如果与key管理的list中没有值时,则该key是不存在的)在指定的key所关联的list的头部插入value
lpushx key value

5、仅当参数中指定的key存在时(如果与key管理的list中没有值时,则该key是不存在的)在指定的key所关联的list的尾部插入value。
rpushx key value

6、返回并弹出指定的key关联的链表中的第一个元素,即头部元素
lpop key

7、从尾部弹出元素
rpop key

8、将链表中的尾部元素弹出并添加到头部
rpoplpush resource destination

9、返回指定的key关联的链表中的元素的数量
llen key

10、设置链表中的index的脚标的元素值,0代表链表的头元素,-1代表链表的尾元素
lset key index value

3、操作Set

(1)使用场景:

set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。在获取交集,并集,差集时可用set,可以计算共同喜好,全部的喜好,自己独有的喜好等功能

(2)常用操作命令:
1、向set中添加数据,如果该key的值有则不会重复添加
sadd key values[value1、value2……]

2、删除set中的指定成员
srem key members[member1、menber2…]

3、获取set中所有的成员
smembers key 

4、判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在(无论集合中有多少元素都可以极速的返回结果)
sismember key menber

5、集合的差集运算 A-B,返回key1与key2中相差的成员,而且与key的顺序有关。即返回差集。
sdiff key1 key2

6、集合的交集运算
sinter key1 key2 key3…

7、集合的并集运算
sunion key1 key2 key3…

8、随机返回set中的一个成员
srandmember key

4、操作hash

(1)使用场景:

一般key为ID或者唯一标识,value对应的就是详情了。如商品详情,个人信息详情,新闻详情等

(2)常用操作命令:
1、为指定的key设定field/value对
hset key  field value

2、为指定的key设定多个field/value对
hmset key field1 value1 field2 value2  field3 value3

3、返回指定的key中的field的值
hget key field

4、获取key中的多个field值
hmget key field1 field2 field3

5、获取所有的key
hkeys key

6、获取所有的value
hvals key

7、获取key中的所有field 中的所有field-value
hgetall key

8、可以删除一个或多个字段,返回是被删除的字段个数
hdel key field[field…]

9、删除整个list
del key

5、操作sortedset

(1)使用场景:

sorted set多了一个权重参数score,集合中的元素能够按score进行排列。可以做排行榜应用,取TOP N操作

(2)常用操作命令:
1、将所有成员以及该成员的分数存放到sorted-set中。如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数。(根据分数升序排列)
zadd key score member score2 member2…

2、返回指定成员的分数
zscore key member

3、获得集合中的成员数量
zcard key

4、移除集合中指定的成员,可以指定多个成员
zrem key member[member…]

5、获取集合中角标为start-end的成员,[withscore]参数表明返回的成员包含其分数。
zrange key strat end [withscores]

6、按照排名范围删除元素
zremrangebyrank key start stop 

7、按照分数范围删除元素
zremrangescore key  min max 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值