• Redis基本使用


    一、介绍

    redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。是完全开源免费的,用C语言编写的,遵守BSD协议,高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库。

    二、 特点

    • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
    • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    • Redis支持数据的备份,即master-slave模式的数据备份。
    • 单线程,避免线程切换和竞态消耗

    三、优势

    • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
    • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
    • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
    • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

    四、使用场景

    • 缓存系统
    • 排行榜
    • 计数器
    • 社交网络中的点赞数,评论数等
    • 消息队列系统
    • 实时系统

    五、安装使用

    (1)下载安装链接

     https://github.com/microsoftarchive/redis/releases 
    
    • 1

    六、数据类型

    Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。其通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:

    • 字符串类型: string
    • 哈希类型: hash
    • 列表类型: list
    • 集合类型: set
    • 有序集合类型: sortedset(zset)

    七、常用指令

    1、启动服务

    进入到redis目录中,执行以下命令,redis-server.exe redis.windows.conf

    D:\DevSoft\redis\redis>redis-server.exe redis.windows.conf
                    _._
               _.-``__ ''-._
          _.-``    `.  `_.  ''-._           Redis 3.0.504 (00000000/0) 64 bit
      .-`` .-```.  ```\/    _.,_ ''-._
     (    '      ,       .-`  | `,    )     Running in standalone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 19360
      `-._    `-._  `-./  _.-'    _.-'
     |`-._`-._    `-.__.-'    _.-'_.-'|
     |    `-._`-._        _.-'_.-'    |           http://redis.io
      `-._    `-._`-.__.-'_.-'    _.-'
     |`-._`-._    `-.__.-'    _.-'_.-'|
     |    `-._`-._        _.-'_.-'    |
      `-._    `-._`-.__.-'_.-'    _.-'
          `-._    `-.__.-'    _.-'
              `-._        _.-'
                  `-.__.-'
    
    [19360] 04 Nov 08:36:59.203 # Server started, Redis version 3.0.504
    [19360] 04 Nov 08:36:59.205 * DB loaded from disk: 0.000 seconds
    [19360] 04 Nov 08:36:59.206 * The server is now ready to accept connections on port 6379
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    2、 客户端连接

    进入到redis目录中,执行以下命令 redis-cli.exe -h 127.0.0.1 - p 6379 ,其中,-h 表示ip地址,-p 表示redis的端口,如果是执行redis-cli.exe 没有后面的参数,则参数默认值ip是127.0.0.1,端口是6379,数据库是第0个

    D:\DevSoft\redis\redis>redis-cli.exe -h 127.0.0.1 -p 6379
    127.0.0.1:6379>
    
    • 1
    • 2
    3、 密码验证

    如果设置了密码,则进入执行指令需要进行密码验证

    127.0.0.1:6379> get a
    (error) NOAUTH Authentication required.
    127.0.0.1:6379>
    
    • 1
    • 2
    • 3

    auth password(设置的密码)为认证密码

    127.0.0.1:6379> auth 1
    OK
    
    • 1
    • 2
    4、修改密码
    • 临时修改密码
    127.0.0.1:6379> config set requirepass 11
    OK
    
    • 1
    • 2
    • 永久修改密码

    在配置redis.windows.conf中修改requirepass参数的值即可,然后重启服务,或者执行以下指令

    requirepass 1
    
    • 1
    5、数据库
    5.1 数据库数量

    数据库的数量是可以配置的,默认情况下是16个。修改redis.window.config下的databases指令,不可以通过命令的方式来扩展库。 在配置文件里面修改databases属性即可

    databases 16
    
    • 1
    5.2 切换数据库

    一个redis默认启动的时候,有16个库(0-15),这个可以动态的指定的,每个数据库都有属于自己的空间,不必担心之间的key冲突。需要注意的一个问题是,只有单机的情况,才会有多个库,如果集群的情况,只有db 0 了,切换指令如下

    127.0.0.1:6379> select 1
    OK
    
    • 1
    • 2
    5.3查看当前数据库大小
    127.0.0.1:6379[1]> dbsize
    (integer) 2
    
    • 1
    • 2
    5.4清空当前数据库的键值对

    清空当前数据库的键值对指令:flushdb,完成之后再查询数据库大小为0

    127.0.0.1:6379[1]> flushdb
    OK
    127.0.0.1:6379[1]> dbsize
    (integer) 0
    127.0.0.1:6379[1]>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    5.5清空所有数据库的键值对
    127.0.0.1:6379[1]> flushall
    OK
    
    • 1
    • 2
    5.6移动键到指定数据库

    不同数据库之间数据是不能互通的,move移动键到指定数据库,指令:move key n (在当前数据库移动key到数据库n)

    # 切换数据库第0127.0.0.1:6379[1]> select 0
    OK
    127.0.0.1:6379> set a a
    OK
    # 切换数据库第1127.0.0.1:6379> select 1
    OK
    127.0.0.1:6379[1]> set b b
    OK
    127.0.0.1:6379[1]> select 0
    OK
    127.0.0.1:6379> move a 1
    (integer) 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    6、服务器相关
    1、ping
    检测连接是否存活
    
    2、echo xxx
    在命令行打印内容
    
    3、quit、exit
    退出客户端
    
    4、shutdown
    退出服务器端
    
    5、info
    返回redis相关信息
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    7、key相关指令
    7.1、查看当前数据库所有key
    127.0.0.1:6379> keys *
    1) "a"
    2) "b"
    
    • 1
    • 2
    • 3
    7.2、检查给定的key是否存在

    指令:EXISTS Key ,存在的则返回1,不存在则返回0

    # 存在key值a
    127.0.0.1:6379> EXISTS a
    (integer) 1
    # 不存在key值aa
    127.0.0.1:6379> EXISTS aa
    (integer) 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    7.3、Key的剩余生存时间

    TTL Key: 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

    key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。

    注意:

    在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1

    # 不存在的key
    127.0.0.1:6379> ttl c
    (integer) -2
    # 存在的key,但是没有设置剩余生存时间    
    127.0.0.1:6379> ttl a
    (integer) -1
    # 有剩余生存时间的 key
    127.0.0.1:6379> ttl b
    (integer) 97
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    7.4、删除key

    Redis DEL 命令用于删除已存在的键。不存在的 key 会被忽略 ,当 key 不存在时,返回 0 。 当 key 存在返回 1

    del key
    
    • 1
    7.5、设置过期时间
    3、EXPIRE key seconds 
    为key设置过期时间()
    
    4、EXPIRE key timestamp 
    用时间戳的方式给key设置过期时间
    
    5、PEXPIRE key milliseconds 
    设置key的过期时间以毫秒计
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    7.6、修改key的名称
    # 仅当newkey不存在时,将key改名为newkey
    RENAME key newkey
    
    • 1
    • 2
    8、字符串命令
    设置指定 key 的值

    指令:SET key value
    说明:设置key的值为value

    # 设置key为a的value值为a
    127.0.0.1:6379> set a a
    OK
    
    • 1
    • 2
    • 3
    获取指定 key 的值

    指令:get key
    说明:获取key的value值

    127.0.0.1:6379> get a
    "a"
    
    • 1
    • 2
    设置key的值与过期时间

    指令:SETEX key seconds value
    说明:将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

    127.0.0.1:6379> get a
    "50"
    127.0.0.1:6379> setex  a 100  88
    OK
    127.0.0.1:6379> get a
    "88"
    127.0.0.1:6379> ttl a
    (integer) 96
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    key中字符串值的子字符

    GETSET key value:返回key中字符串值的子字符

    127.0.0.1:6379> get a
    "abcd"
    127.0.0.1:6379> GETRANGE a 1 3
    "bcd"
    127.0.0.1:6379>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    其他
    1、GETSET key value
    将给定key的值设为value,并返回key的旧值
    //示例,设置key为a的新值123,返回旧值abcd
    127.0.0.1:6379> getset a 123
    "abcd"
    
    2、MGET KEY1 KEY2
    获取一个或者多个给定key的值
    //示例
    127.0.0.1:6379> get a
    "123456789"
    127.0.0.1:6379> get b
    "abc"
    127.0.0.1:6379> mget a b
    1) "123456789"
    2) "abc"
    
    3、SETNX key value
    只有在 key 不存在时设置 key 的值。
    //示例    
    127.0.0.1:6379> get aa
    (nil)
    127.0.0.1:6379> setnx aa a
    (integer) 1
    127.0.0.1:6379> get aa
    "a"
    
    4、STRLEN key
    返回 key 所储存的字符串值的长度。
    //示例    
    127.0.0.1:6379> set a 123456789
    OK
    127.0.0.1:6379> strlen a
    (integer) 9
    
    5、MSET key value [key value ...]
    同时设置一个或多个 key-value 对。
    //示例:同时设置key vlaue键值对,a:1 b:2 c:3 
    127.0.0.1:6379> mset  a 1  b 2 c 3
    OK
    127.0.0.1:6379> get c
    "3"
    127.0.0.1:6379> get b
    "2"    
    
    6、MSETNX key value [key value ...] 
    同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
    //示例 
    127.0.0.1:6379> msetnx  aaa 1 bbb 2
    (integer) 1  
        
    7、PSETEX key milliseconds value
    这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。
    
    8、INCR key
    将 key 中储存的数字值增一。
    //示例
    127.0.0.1:6379> set a 1
    OK
    127.0.0.1:6379> incr a
    (integer) 2
    127.0.0.1:6379> get a
    "2"
    
    9、INCRBY key increment
    将 key 所储存的值加上给定的增量值(increment) 。
    //示例
    127.0.0.1:6379> set a 1
    OK
    127.0.0.1:6379> incrby a 123
    (integer) 124
        
    10、INCRBYFLOAT key increment
    将 key 所储存的值加上给定的浮点增量值(increment) 。
    //示例
    127.0.0.1:6379> set a 100
    OK
    127.0.0.1:6379> INCRBYFLOAT a 1.5
    "101.5"
        
    11、DECR key
    将 key 中储存的数字值减一。
    //示例    
    127.0.0.1:6379> get a
    "99"
    127.0.0.1:6379> decr a
    (integer) 98
        
    12、DECRBY key decrement
    key 所储存的值减去给定的减量值(decrement)
    //示例    
    127.0.0.1:6379> get a
    "88"
    127.0.0.1:6379> decrby a 10
    (integer) 78
        
    13、APPEND key value
    如果 key 已经存在并且是一个字符串, APPEND 命令将 指定value 追加到改 key 原来的值(value)的末尾
    //示例
    127.0.0.1:6379> set a abc
    OK
    127.0.0.1:6379> append a 123
    (integer) 6
    127.0.0.1:6379> get a
    "abc123"   
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    9、哈希(Hash)

    Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象 , Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)

    哈希表Key中的字段 field 值为 value

    指令:hset key field value
    说明:将哈希表 key 中的字段 field 的值设为 value。重复设置同一个field会覆盖,返回0

    127.0.0.1:6379> hset a name abcd
    (integer) 0
    127.0.0.1:6379> hset a name2  1abcd
    (integer) 1
    
    • 1
    • 2
    • 3
    • 4
    哈希表Key中新增多对field -value

    指令:hmset key field1 value1 [field2 value2…]
    说明:同时将多个 field-value (域-值)对设置到哈希表 key 中

    # 设置hashmap的key值为a,field-value新增name:abc age:20
    127.0.0.1:6379> hmset a  name abc  age 20
    OK
    
    • 1
    • 2
    • 3
    设置哈希表字段field对应的值

    指令: hsetnx key field value:
    说明:只有在字段 field不存在时,设置哈希表字段的值 ,设置成功返回1,不成功返回0

    127.0.0.1:6379> hsetnx a name 123
    (integer) 0
    127.0.0.1:6379> hsetnx a name3 123
    (integer) 1
    
    • 1
    • 2
    • 3
    • 4
    获取存储在哈希表中指定字段值

    指令:hget key field value
    说明:获取存储在哈希表中指定字段的值

    127.0.0.1:6379> hget a name
    "abcd"
    
    • 1
    • 2
    获取所有字段field

    指令:hkeys key
    说明:获取所有字段field

    127.0.0.1:6379> hkeys a
    1) "name"
    2) "description"
    3) "b"
    4) "age"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    获取哈希表中所有值value

    指令:hvals key
    说明:获取所有值value

    127.0.0.1:6379> hvals a
    1) "abcd"
    2) "a"
    3) "c"
    4) "20"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    获取所有给定字段的值

    指令:hmget key field1 [field2…]
    说明:获取所有给定字段的值

    127.0.0.1:6379> hmget a name name3
    1) "abcd"
    2) "123"
    
    • 1
    • 2
    • 3
    哈希查看指定的字段是否存在

    查看哈希表a中,指定的字段值a是否存在,存在返回1,不存在返回0

    127.0.0.1:6379> hexists a a
    (integer) 0
    
    • 1
    • 2
    删除一个/多个field字段

    指令 :hdel key field1 [field2…]
    说明:删除哈希表key中一个/多个field字段

    127.0.0.1:6379> hdel a name2 name3
    (integer) 2
    
    • 1
    • 2
    其他
    1、hlen key: 获取哈希表中字段的数量
    127.0.0.1:6379> hlen a
    (integer) 4
        
    2、hgetall key: 获取在哈希表key 的所有字段和值
    127.0.0.1:6379> hgetall a
    1) "name"
    2) "abcd"
    3) "description"
    4) "a"
    5) "b"
    6) "c"
    7) "age"
    8) "20"  
        
    3、hincrby key field n: 为哈希表 key 中的指定字段的整数值加上增量n,并返回增量后结果 一样只适用于整数型字段
    127.0.0.1:6379> hget  a age
    "32"
    127.0.0.1:6379> hincrby a age 12
    (integer) 44
    
    4、hincrbyfloat key field n: 为哈希表 key 中的指定字段的浮点数值加上增量 n。
    127.0.0.1:6379> hget  a age
    "44"
    127.0.0.1:6379> hincrbyfloat a age 3.5
    "47.5"    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    10、列表(List)
    介绍

    Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),也可以获取指定范围指定下标的元素等。一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

    特点
    • 列表中的元素是有序的,可以通过索引下标获取某个元素霍某个某个范围内的元素列表
    • 列表中的元素可以是重复的
    使用场景

    消息队列、栈、文章列表等

    常用指令
    添加操作

    (1)指令:lpush/rpush key value1[value2…]
    说明:从左边/右边向列表中PUSH值(一个或者多个)

    # 在user列表中,添加a b c
    127.0.0.1:6379> lpush user a b c
    (integer) 3
    127.0.0.1:6379> rpush user  b
    (integer) 4
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (2)指令:lpushx/rpushx key value
    说明:向已存在的列名中push值(一个或者多个),list不存在 lpushx失败

    127.0.0.1:6379> lpushx user e
    (integer) 5
    # 向use1r中新增值e,不存在则返回0
    127.0.0.1:6379> lpushx use1r e
    (integer) 0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (3)指令:linsert key before|after pivot value
    说明:在指定列表元素的前/后 插入value
    返回值:如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到 pivot ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。

    # 在c的前面新增值1
    127.0.0.1:6379> linsert user before c  1
    (integer) 6
    # 在c的后面新增值2
    127.0.0.1:6379> linsert user after  c 2
    (integer) 7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    查找操作

    (1)指令:lindex key index
    说明:通过索引获取列表元素

    # 获取user列表index为2的值
    127.0.0.1:6379> lindex user 2
    "c"
    
    • 1
    • 2
    • 3

    (2)指令:lrange key start end
    说明: 获取list 起止元素 (索引从左往右 递增)

    # 获取user列表index为1-3的值
    127.0.0.1:6379> lrange user  1  3
    1) "1"
    2) "c"
    3) "2"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (3)指令:llen key
    说明: 查看列表长度

    127.0.0.1:6379> llen user
    (integer) 7
    
    • 1
    • 2
    修改操作

    指令:lset key index value
    说明:通过索引为元素设值

    # 设置user列表index为1的值
    127.0.0.1:6379> lset user 1 123
    OK
    
    • 1
    • 2
    • 3
    删除操作

    (1)指令:lpop/rpop key
    说明:从最左边/最右边移除值 并返回。 值在键在,值光键亡

    127.0.0.1:6379> lpop user
    "c"
    
    • 1
    • 2

    (2)指令:ltrim key start end
    说明:通过下标截取指定范围内的列表

    127.0.0.1:6379> ltrim user  0 1
    OK
    
    • 1
    • 2
    11、Set(集合)
    介绍
    • Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。集合对象的编码可以是 intset 或者 hashtable。
    • Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
    • 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
    常用命令
    新增操作

    (1)指令:sadd key member1[member2…]
    说明: 向集合中无序增加一个/多个成员

    127.0.0.1:6379> sadd stu a  b  c
    (integer) 3
    
    • 1
    • 2
    查询操作

    (1)指令:scard key
    说明: 获取集合的成员数

    127.0.0.1:6379> scard stu
    (integer) 3
    
    • 1
    • 2

    (2)指令: smembers key
    说明: 返回集合中所有的成员

    127.0.0.1:6379> smembers stu
    1) "a"
    2) "b"
    3) "c"
    
    • 1
    • 2
    • 3
    • 4

    (3)指令: sismember key member
    说明: 查询member元素是否是集合的成员,若存在返回1,不存在返回0

    127.0.0.1:6379> sismember stu a
    (integer) 1
    
    • 1
    • 2
    删除操作

    指令:srem key member1[member2…]
    说明: 移除集合中一个/多个成员

    127.0.0.1:6379> srem stu a b
    (integer) 2
    
    • 1
    • 2
    12、Zset(有序集合)
    介绍

    在有序集合中保留了不能有重复成员的特性,但其中的成员是可以排序的,每一个元素都会关联一个double类型的分数(score)作为排序依据,score相同时按字典顺序排序。redis正是通过分数来为集合中的成员进行从小到大的排序。

    应用场景

    排行榜系统,成绩单,工资表

    常用命令
    新增操作

    (1)指令: zadd key score member1 [score2 member2]
    说明: 向有序集合添加一个或多个成员,或者更新已存在成员的分数

    //新增key为info的值num,序号为1,添加成功,返回1
    127.0.0.1:6379> zadd info 1 num
    (integer) 1
    //新增key为info的值num,前面已添加,添加失败,返回0
    127.0.0.1:6379> zadd info 1 num
    (integer) 0
    //新增key为info的值num2,序号为2,添加成功,返回1 
    127.0.0.1:6379> zadd info 2  num2
    (integer) 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    查询操作

    (1)指令: zscore key member
    说明: 返回有序集中,成员的分数值

    127.0.0.1:6379> zscore info num
    "1"
    127.0.0.1:6379> zscore info num2
    "2"
    
    • 1
    • 2
    • 3
    • 4

    (2)指令:zcard key
    说明: 获取有序集合的成员数

    127.0.0.1:6379> zcard info
    (integer) 2
    
    • 1
    • 2

    (3)指令:zcount key min max
    说明: 计算在有序集合中指定区间score的成员数

    127.0.0.1:6379> zcount info 1  3
    (integer) 3
    127.0.0.1:6379> zcount info 1  4
    (integer) 4
    
    • 1
    • 2
    • 3
    • 4

    (4)指令:zrank key member
    说明: 返回有序集合中指定成员的索引

    127.0.0.1:6379> zrank info num2
    (integer) 1
    
    • 1
    • 2

    (5)指令:zrevrank key member
    说明: 返回有序集合中指定成员的索引,从大到小排序

    127.0.0.1:6379> zrevrank info num3
    (integer) 1
    127.0.0.1:6379> zrevrank info num
    (integer) 3
    
    • 1
    • 2
    • 3
    • 4

    (6)指令:zrange key start end
    说明: 通过索引区间返回有序集合成指定区间内的成员

    127.0.0.1:6379> zrange info 0 10
    1) "num"
    2) "num2"
    3) "num3"
    4) "num4"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (7)指令:zrange key start end withscores
    说明: 通过索引区间返回有序集合成指定区间内的成员包括score

    127.0.0.1:6379> zrange info 0 10 withscores
    1) "num"
    2) "1"
    3) "num2"
    4) "2"
    5) "num3"
    6) "3"
    7) "num4"
    8) "4"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    删除操作

    (1)指令: zrem key member1 [member2…]
    说明: 移除有序集合中一个/多个成员

    //删除有序队列info的成员num和num2
    127.0.0.1:6379> zrem info num num2
    (integer) 2
    
    • 1
    • 2
    • 3

    (2)指令: zremrangebylex key min max
    说明: 移除有序集合中给定的字典区间的所有成员
    min:字典中排序位置较小的成员,必须以"[“开头,或者以”(“开头,可使用”-“代替
    max:字典中排序位置较大的成员,必须以”[“开头,或者以”(“开头,可使用”+"代替
    其中:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“+”表示无穷大,“-”表示无穷小

    127.0.0.1:6379> zremrangebylex  info [a [c
    (integer) 2
    
    • 1
    • 2

    (3)指令: zremrangebyrank key start stop
    说明: 移除有序集合中给定的排名区间的所有成员

    //移除key为info有序队列的第0-1的元素
    127.0.0.1:6379> zremrangebyrank  info 0  1
    (integer) 2
    
    • 1
    • 2
    • 3

    (4)指令: zremrangebyscore key min max
    说明: 移除有序集合中给定的分数区间的所有成员

    移除key为info有序队列的score值在区间1-3的数据
    127.0.0.1:6379> zremrangebyscore  info 1 3
    (integer) 2
    
    • 1
    • 2
    • 3

    系统服务

    创建日志文件

    在redis目录下的redis.windows-service.conf,新增日志文件配置,同时在redis路径下新增文件夹Logs以及redis_log.txt日志文件

    # Redis to log on the standard output. 
    logfile "Logs/redis_log.txt"
    
    • 1
    • 2
    添加到系统服务

    cmd命令到redis的目录下,执行命令

    redis-server --service-install redis.windows-service.conf --loglevel verbose
    
    • 1

    在这里插入图片描述
    查看服务,Win+R快捷键输入services.msc,查看服务
    在这里插入图片描述

    删除系统服务

    用管理员打开cmd命令 ,执行命令 sc delete 服务名

    C:\Windows\system32>sc delete Redis
    [SC] DeleteService 成功
    
    • 1
    • 2
    常用命令

    在redis目录下执行命令:

    • 卸载服务

      redis-server --service-uninstall

    • 开启服务

      redis-server --service-start

    • 停止服务

      redis-server --service-stop

  • 相关阅读:
    【深度学习】基于tensorflow的小型物体识别训练(数据集:CIFAR-10)
    [React] Zustand状态管理库
    STM32与ZigBee无线通信技术在工业自动化中的应用
    RFID让固定资产盘点更快更准
    联想小新如果使用蓝牙鼠标在关闭了触摸板的情况下不小心关掉了蓝牙该如何处理?
    【开题报告】基于django+vue新闻发布系统(论文+程序)
    jpg怎么转换成png?
    过拟合和欠拟合是什么?有什么异同点?解决办法是什么?
    【算法练习Day20】修剪二叉搜索树&&将有序数组转换为二叉搜索树&&把二叉搜索树转换为累加树
    加列法计算lower unit matrix inversion
  • 原文地址:https://blog.csdn.net/u010520146/article/details/127731862