Redis学习(二) -- Redis的五种数据类型以及相关操作命令

Redis数据类型一共是五种,在昨天的文章里面已经提到了。今天就具体说一下五种数据类型的相关操作命令。

Redis存储形式就是key-value。

1、String 

set key value:赋值

get key: 取值

getset key value:取值并赋值。(返回key原来的值,将新的value值赋值给key)

mget key1 key2 key3:获取多个值

mset key1 value1 key2 value2:设置多个值

del key:删除

incr key: 将key对应的value(数字)增加1

incr key num:将指定key对应value(数字)增加num

decr key: 将key对应的value(数字)减少1

decr key num:将指定key对应value(数字)减少num

append key value:想key对应的值得末尾追加value,若key对应的值不存在,则该命令相当于set key value。返回值是追加后字符的总长度。

strlen key:返回key对应值的长度,若键不存在,则返回0

应用场景:商品编号,订单号采用string的递增数字特性生成。

2、Map,散列类型

hset key key1 value1:key是键,key1 value1 是值。value1再不能设置为Map。新增和更新都是这个方法,返回值为1是新增,返回为0是更新。

hget key key1:获取key对应Map中键为key1的元素

hmset key key1 value1 [key2 value2 ...}:新增多个值

hmget key key1 [key2 ...]:获取多个值

hgetall key:获取key对应Map中所有的value

hdel key key1:删除key对应Map中键为key1的元素

hincrby key key1 num:key对应Map中键为key1的元素的值增加num

hexists key key1:判断key对应的Map中是否存在键为key1的元素,若存在,返回1,若不存在,返回0

hkeys key:获取key对应Map中的所有键

hvals key:获取key对应Map中的所有值

hlen key:获取key对应value中的字段数量

应用场景:存储商品对应信息,key为商品id,value为商品对应所有信息。

eg:hmset  items:10010 id 3 name apple price 6688  size 8p

          商品信息的key为:[items:10010]

          商品信息的value为:[ id 3 name apple price 6688  size 8p]

3、List,列表类型

       我们都知道,ArrayList是基于数组实现数据存储,特点:增删慢,查询快。

                              LinkedLise是基于双向链表实现数据存储,特点:增删快,查询慢,但查询链表两端时也很快。

      Redis中的List类型是采用链表来存储数据的,所以对于redis的list数据类型的操作,都是操作List两端的数据。

lpush key value1 [value2 value3 ...]:从链表的左边开始存储

rpush key value1 [value2 value3 ...]:从链表的右边开始存储

eg:lpush list1 1 2 3 4 5 6;

        rpush list1 a b c d e;

链表中存储如下图所示:

    

lrange key start end:获取key对应值的下标从start 到 end的所有元素,下标从0开始。

eg:lrange key 0 -1      这是查看key对应的value的所有元素。-1代表最后一个 元素

lpop key:从链表左边弹出一个元素

rpop key:从链表右边弹出一个元素

注意:元素弹出后,该元素就不存在原来列表中。

llen key:获取key对应列表中元素的个数

lrem key count value:删除列表中前count个值为value的元素,返回实际删除的元素的个数。

              count > 0:lrem 会从列表的左边开始删除

              count < 0: lrem 会从列表的右边开始删除

             count = 0: lrem会删除所有值为value的元素

lindex key index:获取key对应列表中指定索引index的元素值

lset key index value : 设置key对应列表中指定索引index的元素值

ltrim key start end:保留key对应列表的指定范围的片段(下标从start到end保留),指定范围和lrange一致。

linsert key before|after value value1: 向列表中插入元素。该命令首先会在列表中从左到右查找值为value的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value1插入到该元素的前面还是后面。 

应用场景:

                  在Redis中创建商品评论列表

                  用户发布商品评论,将评论信息转成json存储到list中。

                    用户在页面查询评论列表,从redis中取出json数据展示到页面。

             定义商品评论列表key:

                         商品编号为1001的商品评论key【items: comment:1001】

           LPUSH items:comment:1001 '{"id":1,"name":"商品不错,很好!!","date":1430295077289}'

4、Set,集合(无序,不可重复)

sadd key value1 value2 value3:增加集合key,值为 value1 value2 value3

srem key  value1 value2:删除key对应集合中的值为 value1 value2 的元素

smembers key:获取key对应集合的所有元素

sismember key value: 判断key对应集合中是否存在值为value的元素,若存在,返回1,若不存在,返回0

sdiff key1 key2:获取集合key1和key2的差集

sinter key1 key2:获取集合key1和key2的交集

sunion key1 key2:获取集合key1和key2的并集

scard key:获取key对应集合中元素的个数

spop key:弹出key对应集合中的某一个元素,弹出后该集合中就不存在该元素

5、SortedSet

集合(有序集合,可排序,元素唯一),又叫zset

Sortedset和set的不同之处,是会给set中的元素添加一个分数,然后通过这个分数进行排序。

zadd key score1  value1 [score2 value2   score3 value3 ...]: 向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素.

zscore key member:查看某个元素的分数

zrem key value: 从key对应的集合中删除值为value的元素

zrange key start end : 获取key对应集合中下标从start 到 end 的元素,从小到大

zrevrange key start end: 获取key对应集合中下标从start 到 end 的元素,从大到小

zrange key start end withscores: 获取key对应集合中下标从start 到 end 的元素以及元素对应的分数,从小到大

zrevrange key start end withscores:  获取key对应集合中下标从start 到 end 的元素以及元素对应的分数,从大到小

zrand key value:获取值为value元素在key所对应集合中的排名。(按分数,从小到大的排名名次)

zrevrand key value: 获取值为value元素在key所对应集合中的排名。(按分数,从大到小的排名名次)

zrangebyscore key min max [withscores] [limit offset count]:获取分数在min 和max之间的元素,加上【withscores】就是带上分数,加上limit 是指:从满足条件的结果中的下标为offset的元素开始返回count个元素

zincrby key num value: 增加key对应集合中值为value元素的分数,增加量为num,返回值是增加后的分数。

zcard key: 获取集合中元素的个数

zcount key min max: 获取key对应集合中分数范围在min 到 max的元素个数

zremrangebyrank key start end:按照排名范围删除元素。(删除排名在范围start 到end 范围内的元素,包括start和end)

zremrangebyscore key min max: 按照分数范围删除元素。(删除分数在min 到max范围内的元素,包括min和max)

应用场景:

           商品销售排行榜

          根据商品的销售量对商品进行排行显示:定义一个商品销售量集合,分数为商品销售量

6、其他命令

keys *:查看数据库中所有的key

keys *list:查看数据库中所有的以list结尾的key(此处可以任意*匹配)

exits key:查看是否存在某一个key,存在返回1,不存在返回0

del key:删除某个key

rename key new_key:修改某个key的名字

type key:判断某个key对应的值的类型

好了 ,以上就是Redis五种数据类型的一些常见命令操作,还是那句话,希望能帮到一些像我一样也刚开始学习redis的朋友。

今天到此结束,明天继续。

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

redis学习另外几篇:

Redis的简介以及安装启动

Redis的持久化方案

Redis的主从复制

主从切换

 

 

猜你喜欢

转载自blog.csdn.net/pavel101/article/details/81460804