文档章节

Redis研究-3.6 Redis 5种类型的基本使用2

会飞的杨先生
 会飞的杨先生
发布于 2015/11/03 01:49
字数 1816
阅读 211
收藏 6

1.字符串

在Redis中,Redis将字符串当做三种类型来对待,一种是字节串,一种是整数,最后一种是浮点数。因此,针对不同的类型,Redis也有不同的操作,特别是针对后面两种类型,涉及到类型转换的时候,Redis会自动处理。

** 1.1 整数类型操作**

    _1.1.1 incr_ 
        他的作用是在指定的key上进行加1操作特别的,如果在Redis中不存在这个key,那么,先在Redis中创建这个key,然后再执行加1操作。

操作: get redis_int 结果: (nil)

操作: incr redis_int 结果: (integer) 1

_1.1.2 incrby _
    他的作用是在指定的key上执行加法操作。

操作:incrby redis_int 2
结果:(integer) 4
操作:get redis_int
结果:"4"

_1.1.3 decr_
    他的作用和incr相反。

操作:decr redis_int
结果:(integer) 3
操作:get redis_int
结果:"3"

操作:get redis_an
结果:(nil)
操作:decr redis_an
结果:(integer) -1


1.1.4 decrby
    他的作用和incrby相反。这里就不举例啦。

1.2 字节串

_1.2.1 append_
    他的作用是在指定的key的尾部添加指定的子串。如果指定的key不存在,那么,先创建这个key,然后再进行添加操作。

操作:get redis_str
结果:(nil)
操作:append redis_str "str"
结果:(integer) 3
操作:get redis_str
结果:"str"
操作:ppend redis_str ",str"
结果:(integer) 9
操作:get redis_str
结果:"str\xef\xbc\x8cstr"





 _1.2.2 getrange_

    他的作用是在指定的key上,获取在[start,end]指定范围的字串。如果在Redis中不存在这个key,那么将返回一个空的字串。
操作:getrange ssss 0 100
结果:""
操作:getrange redis_str 0 5
结果:"str\xef\xbc\x8c"


_1.2.3 setrange_
    他的作用是在指定的key上,从指定的start开始,将这个串设置为指定的值。
操作:get redis_str
结果:"str\xef\xbc\x8cstr"
操作:setrange redis_str 0 5
结果:(integer) 9
操作:setrange redis_str 0 ssssssss
结果:(integer) 9
操作:get redis_str
结果:"ssssssssr"


_1.2.4 setbit_
    他的作用是将指定的key看作是一个二进制串,然后将指定的位置设置为响应的值。
操作:get redis_str
结果:"ssssssssr"
操作:setbit redis_str 3 2
结果:(error) ERR bit is not an integer or out of range
操作:setbit redis_str 3 1
结果:(integer) 1
操作:getbit redis_str 3
结果:(integer) 1
操作:setbit redis_str 3 0
结果:(integer) 1
操作:getbit redis_str 3
结果:(integer) 0

_1.2.5 getbit_
    他的作用是将指定的key看做是一个二进制串,然后返回指定的位的二进制值。

2.列表

_2.1 ltrim_
    他的作用是对指定的列表进行裁剪,只保留在[start,end]之间的元素组成的列表。
操作:lrange list_ch2 0 -1
结果:
1) "item6"
2) "item5"
3) "item4"
4) "item3"
5) "item12"
6) "item1"
7) "item"
操作:ltrim list_ch2 1 4
结果:OK
操作:lrange list_ch2 0 -1
结果:
1) "item5"
2) "item4"
3) "item3"
4) "item12"


_2.2 BLPOP_
    从一个非空的列表的左端返回一个元素,或者等待一段时间后,有元素可返回的元素为止。
操作:lrange list_ch3 0 -1
结果:
1) "item6"
2) "item5"
3) "item4"
4) "item3"
5) "item2"
6) "item1"
7) "item"
操作:BLPOP list_ch3
结果:(error) ERR wrong number of arguments for 'blpop' command
操作:BLPOP list_ch3 22
结果:
1) "list_ch3"
2) "item6"

_2.3 BRPOP_
    他的作用和BLPOP的作用相同,但是,方向是相反的。
操作:BRPOP list_ch3 22
结果:
1) "list_ch3"
2) "item"

_2.4 RPOPLPUSH_
    他的作用是从source-list的右端弹出一个元素,并放到dest-list的最左端。
操作:lrange source_list 0 -1
结果:
1) "item3"
2) "item2"
3) "item1"
操作:lrange dest_list 0 -1
结果:
1) "item3"
2) "item2"
3) "item1"
操作:RPOPLPUSH source_list dest_list
结果:"item1"
操作:lrange source_list 0 -1
结果:
1) "item3"
2) "item2"
操作:lrange dest_list 0 -1
结果:
1) "item1"
2) "item3"
3) "item2"
4) "item1"

_2.5 BRPOPLPUSH_
    他的作用是从source-list中弹出最右端的元素,然后将这个元素放到dest-list的最左端。但是必须要制定超时时间。
操作:lrange dest_list 0 -1
结果:
1) "item1"
2) "item3"
3) "item2"
4) "item1"
操作:lrange source_list 0 -1
结果:
1) "item3"
2) "item2"
操作:BRPOPLPUSH dest_list source_list
结果:(error) ERR wrong number of arguments for 'brpoplpush' command
操作:BRPOPLPUSH dest_list source_list 1
结果:"item1"

3.集合

_3.1 scard_
    返回集合中的元素的个数
操作:smembers set1
结果:
1) "item1"
2) "item2"
操作:scard set1
结果:(integer) 2

_3.2 srandmember_
    随机返回集合中的一个元素。如果 后面指定的数值为正值,那么,这个随机元素不会重复,相反,有可能会重复。我个人觉得是没多大意义,目前。

_3.3 spop_
    他的最用是从集合中随机删除一个元素。

_3.4 smove_
    他的作用是,当source-set中存在元素item的时候,就会把这个元素item从source-set中删除,并把这个item元素放进dest-set中。

操作:smembers s
结果:
1) "item"
2) "item1"
3) "item2"

操作:smembers d
结果:
1) "item4"
2) "item5"
3) "item3"
操作:smove s d item
结果:(integer) 1

操作:smembers s
结果:
1) "item1"
2) "item2"
操作:smembers d
结果:
1) "item"
2) "item4"
3) "item5"
4) "item3"
操作:smove s d item
结果:(integer) 0


_3.5 SDIFF_
    他的作用是返回存在于第一个集合,而不存在于后面其他集合中的所有元素。
操作:smembers s1
结果:
1) "b"
2) "a"
操作smembers s2
结果:
1) "c"
2) "b"

操作:smembers s3
结果:
1) "c"
2) "d"
操作:sdiff s1 s2 s3
结果:1) "a"


_3.6 SINTER_
    他的作用是计算所有集合中的交集。
_3.7 SUNION _
    他的作用是计算所有集合中的并集。

4.散列

_4.1 HMGET_ 
    获取指定的散列中的指定的一个或者多个key对应的值。
操作:hgetall ht
结果:
1) "k1"
2) "v1"
3) "k2"
4) "v2"
5) "k3"
6) "v3"
操作:hmget ht k1 k2
结果:
1) "v1"
2) "v2"
操作:hmget ht k5
结果:1) (nil)

_4.2 HMSET_
    他的作用是为散列的一个或者多个键设置值。
操作:hgetall ht
结果:
    1) "k1"
    2) "v1"
    3) "k2"
    4) "v2"
    5) "k3"
    6) "v3"
操作:hmset ht k6 v6 k7 v7
结果:OK
操作: hgetall ht
结果:
 1) "k1"
 2) "v1"
 3) "k2"
 4) "v2"
 5) "k3"
 6) "v3"
 7) "k6"
 8) "v6"
 9) "k7"
10) "v7"

_4.3 HDEL_
    他的作用是删除一个或者多个键对应的键值对。

操作:hdel ht k6 k7
结果:(integer) 2

_4.4 HLEN_
    他的作用是返回,这个散列中有多少键值对。
操作:HLEN ht
结果:(integer) 3

_4.5 HEXISTS_
    判断某键是不是在散列中

_4.6 HKEYS_
    返回散列中的所有的键

_4.7 HVALS _
    返回散列中的所有的值

_4.8 HINCRBY_
    给散列的给定的键的值做指定的加法

5.有序集合

5.1 ZCARD
    他的作用是返回有序集合中的成员的数量,如果这个有序集合不存在,则返回为0
操作:zrange sorted-set 0 -1 
结果:
1) "m2"
2) "m4"
3) "m1"
4) "m3"
操作:zcard sorted-set
结果:(integer) 4

5.2 ZINCRBY
    他的作用是为指定的有序集合的成员的分值加上指定的数量。
操作:zincrby sorted-set -22 m1
结果:"-11"


5.3 ZCOUNT
    他的作用是返回有序集合中分值在(min,max)之间的成员数量。
操作:zcount sorted-set 1 51
结果:(integer) 2

5.4 ZRANK
    他的作用是返回指定成员在有序集合中的排名。
操作:zrank sorted-set m3
结果:(integer) 3

5.4 ZSCORE 
    他的作用是返回有序集合中指定成员的分数值。
操作:zscore sorted-set m3
结果:"51"

© 著作权归作者所有

会飞的杨先生
粉丝 10
博文 14
码字总数 30689
作品 0
昆明
CTO(技术副总裁)
私信 提问
springboot,redis应用

1、redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 2、这...

小不点丶
2017/10/20
0
0
2017-05-09日志

1,上午跟钰姐一起研究质监局门户栏目列表,添加判断实现二级菜单标题处显示一级菜单名称,稍微了解freeMarker代码格式,并对逻辑有一定了解。 2,在菜鸟教程学习redis,下载redis的压缩包并...

麦兜鱼丸
2017/05/09
2
0
Redis研究-3.6 Redis5种类型的基本使用

1.字符串 2.列表(redis中的列表是可以存储重复的元素的) 3.集合(也就是说,集合里面是不能有相同的值的,因为他用了hash算法) 4.散列(也就是映射) 5.有序集合(在Redis中,有序集合里面的...

会飞的杨先生
2015/11/02
114
0
redis更新日志中文版2.4-2.6

2.4 -> 2.6 1.SORT命令不会对非数值类型(double)排序,适用于list,set (string 类型使用 sort alpha ) 2.EXPIRE相关命令都精确到了毫秒,不影响expire命令 3.INFO输出格式中增加了空行与注释...

屌丝Lee
2016/06/15
100
0
通过 Redis 实现 RPC 远程方法调用

我发现经常研究并且为之兴奋的一件事就是对系统进行扩展。现在这对不同的人有着不同的意思。作为移植Monolithic应用到Microservices架构方法中的一部分,如何处理Microservices架构是我研究R...

oschina
2014/09/01
7.9K
17

没有更多内容

加载失败,请刷新页面

加载更多

JS 打印控制

JS 打印控制 var PrintStartString = "<!--打印开始标示符-->";//设置打印开始区域var PrintEndString = "<!--打印结束标示符-->";//设置打印结束区域var HtmlText = window.do......

DrChenXX
15分钟前
5
0
LevelDB:使用介绍

LevelDB 提供的接口其实很简单,下面举例进行简单说明。 安装 git clone https://github.com/google/leveldb cd leveldb mkdir -p build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. ......

slagga
20分钟前
5
0
《JavaScript正则表达式迷你书》读书笔记

正则基础 常见简写形式 字符组 具体含义 记忆方式 \d 表示 [0-9]。表示是一位数字。 其英文是 digit(数字) \D 表示 [^0-9]。表示除数字外的任意字符。 \w 表示 [0-9a-zA-Z_]。表示数字、大小...

muzi131313
26分钟前
4
0
Git的反悔操作

概述 这次主要来讲讲Git的反悔操作,自己平时在写代码的过程中经常会出现想要弃用所有的改动或回滚到上一次commit的情况。Git上的反悔操作有reset、rebase、revert等,每个操作各有区别和对应...

duduYZ
26分钟前
2
0
实现双向绑定Proxy比defineproperty优劣如何?

前言 双向绑定其实已经是一个老掉牙的问题了,只要涉及到MVVM框架就不得不谈的知识点,但它毕竟是Vue的三要素之一. Vue三要素 响应式: 例如如何监听数据变化,其中的实现方法就是我们提到的双向...

寻找海蓝
38分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部