请选择 进入手机版 | 继续访问电脑版

[Redis] Redis数据库安装部署及基本操作详解

[复制链接]
查看109 | 回复7 | 2021-9-13 23:53:50 | 显示全部楼层 |阅读模式

Redis数据库概述

  1. Redis是一个开源的、使用c语言编写NoSQL数据库,它是基于内存运行并支持持久化,采用key-value(键值对)的存储形式, 是目前分布式结构中不可或缺的
复制代码

Redis相比于其他数据库的长处

  • 具有极高的数据读写速率 :读(110000次/s),写(81000次/s)
  • 支持丰富的数据范例 :支持key-value、strings、Lists、Hashes(散列值)、Sets等数据范例 操作
  • 支持数据持久化:可以将内存中的数据保存在磁盘中
  • Redis全部 操作都是具有原子性的

Redis安装部署

  1. [root@redis ~]# yum install -y gcc gcc-c++ make
  2. [root@redis opt]# tar xzf redis-5.0.7.tar.gz
  3. [root@redis opt]# cd redis-5.0.7/
  4. [root@redis redis-5.0.7]# make
  5. [root@redis redis-5.0.7]# make prefix=/usr/local/redis install
  6. [root@redis redis-5.0.7]# cd utils/
  7. [root@redis utils]# ./install_server.sh #启动安装脚本
  8. Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server
  9. ##这一步需要手动指定位置,其他都回车即可
  10. [root@localhost utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/
  11. [root@localhost utils]# netstat -antp | grep redis
  12. tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 23276/redis-server
复制代码

Redis服务控制

  1. /etc/init.d/redis_6379 stop
  2. /etc/init.d/redis_6379 start
  3. /etc/init.d/redis_6379 restart
  4. /etc/init.d/redis_6379 status
复制代码

修改设置 文件

  1. [root@localhost utils]# vim /etc/redis/6379.conf
复制代码

在这里插入图片形貌

  1. [root@localhost utils]# /etc/init.d/redis_6379 restart #重启服务
  2. Stopping ...
  3. Waiting for Redis to shutdown ...
  4. Redis stopped
  5. Starting Redis server...
  6. [root@localhost utils]# netstat -antp | grep redis
  7. tcp 0 0 192.168.118.88:6379 0.0.0.0:* LISTEN 23492/redis-server
  8. tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 23492/redis-server
复制代码

Redis下令 工具

  1. redis-server:用于启动Redis的工具
  2. redis-benchmark:用于检测Redis在本机的运行效率
  3. redis-check-aof:修复AOF持久化文件
  4. redis-check-rdb:修复RDB持久化文件
  5. redis-cli:Redis命令行工具
  6. redis-cli -h 远程主机ip -p 服务端口号 -a 指定密码
  7. 如果没有设置数据库密码,可以省略-a选项,若不添加任何选项表示,这使用127.0.0.1:6379连接本机上的Redis数据库
复制代码

Redis测试工具redis-benckmark

  1. redis-benchmark 选项:
  2. -h :指定服务器主机名
  3. -P :指定服务器端口
  4. -s :指定服务器socket(套接字)
  5. -c :指定并发连接数
  6. -n :指定请求数
  7. -d :以字节的形式指定SET/GET值的数据大小
  8. -k :1=keep alive 0=reconnect
  9. -r :SET/GET/INCR 使用随机key,SADD使用随机值
  10. -p :通过管道传输<numreq>请求
  11. -q :强制退出redis
  12. -l :生成循环,永久执行测试
  13. -t :仅运行以逗号分割的测试命令列表
  14. -I :Idle模式,仅打开N哥idle连接并等待
复制代码
  1. [root@localhost utils]# redis-benchmark -h 192.168.118.88 -P 6379 -c 100 -n 10000
  2. ##向主机发送100哥并发连接和10000哥请求测试性能
  3. [root@localhost utils]# redis-benchmark -h 192.168.118.88 -p 6379 -q -d 10
  4. ##测试存取10字节的数据包性能
  5. PING_INLINE: 925925.88 requests per second
  6. PING_BULK: 1470588.12 requests per second
  7. SET: 900900.88 requests per second
  8. GET: 934579.44 requests per second
  9. INCR: 1136363.62 requests per second
  10. LPUSH: 578034.69 requests per second
  11. RPUSH: 793650.75 requests per second
  12. LPOP: 584795.31 requests per second
  13. RPOP: 806451.62 requests per second
  14. SADD: 840336.12 requests per second
  15. HSET: 746268.62 requests per second
  16. SPOP: 1098901.12 requests per second
  17. LPUSH (needed to benchmark LRANGE): 671140.94 requests per second
  18. LRANGE_100 (first 100 elements): 26089.22 requests per second
  19. LRANGE_300 (first 300 elements): 5534.65 requests per second
  20. LRANGE_500 (first 450 elements): 3414.37 requests per second
  21. LRANGE_600 (first 600 elements): 2345.11 requests per second
  22. MSET (10 keys): 120048.02 requests per second
  23. [root@localhost utils]# redis-benchmark -t set,lpush -n 100000 -q
  24. ##测试本机Redis服务在进行set和lpush操作时的性能
  25. SET: 166112.95 requests per second
  26. LPUSH: 191570.88 requests per second
复制代码

Redis数据库数据范例

  1. 每个数据类型的创建key和查看key值都是不同的
复制代码

String数据范例

  1. [root@redis utils]# redis-cli
  2. 127.0.0.1:6379>
  3. [root@redis utils]# redis-cli #查看所有的键
  4. 127.0.0.1:6379> keys *
  5. 1) "counter:__rand_int__"
  6. 2) "myset:__rand_int__"
  7. 3) "mylist"
  8. 4) "key:__rand_int__"
  9. 127.0.0.1:6379> keys m* #查看以m开头所有键
  10. 1) "myset:__rand_int__"
  11. 2) "mylist"
复制代码

创建数据,获取数据

  1. 127.0.0.1:6379> set whd zhangsan #创建一个键whd,值为zhangsan
  2. OK
  3. 127.0.0.1:6379> keys * #查看创建结果
  4. 1) "counter:__rand_int__"
  5. 2) "myset:__rand_int__"
  6. 3) "mylist"
  7. 4) "key:__rand_int__"
  8. 5) "whd"
  9. 127.0.0.1:6379> get whd #获取键值
  10. "zhangsan"
复制代码

查看键是否存在

  1. 127.0.0.1:6379> exists whd #存在返回1,不存在返回为0
  2. (integer) 1
  3. 127.0.0.1:6379> exists www
  4. (integer) 0
复制代码

删除键

  1. 127.0.0.1:6379> del whd
  2. (integer) 1
  3. 127.0.0.1:6379> exists whd
  4. (integer) 0
复制代码

查看键中value的数据范例

  1. 127.0.0.1:6379> set aaa bbb
  2. OK
  3. 127.0.0.1:6379> type aaa
  4. string
复制代码

对键重定名

  1. 127.0.0.1:6379> rename aaa ccc
  2. OK
  3. 127.0.0.1:6379> keys *
  4. 1) "counter:__rand_int__"
  5. 2) "myset:__rand_int__"
  6. 3) "mylist"
  7. 4) "key:__rand_int__"
  8. 5) "ccc"
  9. ##rename也可用来覆盖键值
  10. ```bash
  11. 127.0.0.1:6379> get ccc
  12. "bbb"
  13. 127.0.0.1:6379> set ddd fff #新建键ddd,值为fff
  14. OK
  15. 127.0.0.1:6379> rename ccc ddd #将ccc值覆盖ddd
  16. OK
  17. 127.0.0.1:6379> get ddd #查看结果
  18. "bbb"
  19. ##renamens,可以判断重命名的新键名是否存在,存在则返回0不做操作,不存在则覆盖并重命名
  20. 127.0.0.1:6379> set aaa bbb
  21. OK
  22. 127.0.0.1:6379> renamenx ddd aaa
  23. (integer) 0
复制代码

查看当前数据库key的数目

  1. 127.0.0.1:6379> dbsize
  2. (integer) 6
复制代码

设置暗码 ,删除暗码

  1. 127.0.0.1:6379> config set requirepass 123123 #设置新密码
  2. OK
  3. 127.0.0.1:6379> auth 123123 #认证密码
  4. OK
  5. 127.0.0.1:6379> config get requirepass #查看密码
  6. 1) "requirepass"
  7. 2) "123123"
  8. [root@redis utils]# redis-cli -h 192.168.118.88 -p 6379 #此时可以登录数据库,但是不能进行操作
  9. 192.168.118.88:6379> keys *
  10. (error) NOAUTH Authentication required.
  11. 192.168.118.88:6379> auth 123123 #进行密码认证后才能操作
  12. OK
  13. 192.168.118.88:6379> keys *
  14. 1) "counter:__rand_int__"
  15. 2) "aaa"
  16. 3) "ddd"
  17. 4) "myset:__rand_int__"
  18. 5) "mylist"
  19. 6) "key:__rand_int__"
  20. 192.168.118.88:6379> config set requirepass '' #删除密码
  21. OK
复制代码

追加数据

  1. 127.0.0.1:6379> keys *
  2. 1) "counter:__rand_int__"
  3. 2) "aaa"
  4. 3) "ddd"
  5. 4) "myset:__rand_int__"
  6. 5) "mylist"
  7. 6) "key:__rand_int__"
  8. 7) "www"
  9. 127.0.0.1:6379> get www
  10. "10"
  11. 127.0.0.1:6379> append www 20 #append,追加数值
  12. (integer) 4
  13. 127.0.0.1:6379> get www
  14. "1020"
  15. 127.0.0.1:6379> append whd 23 #如果键不存在,append命令相当于set创建键,并赋值
  16. (integer) 2
  17. 127.0.0.1:6379> get whd
  18. "23"
  19. 127.0.0.1:6379> strlen whd #strlen判断键值得长度
  20. (integer) 2
复制代码

key值递增/递减,incr/decr/incrby/decrby

  1. 127.0.0.1:6379> get whd
  2. "23"
  3. 127.0.0.1:6379> incr whd #INCR递增数值(key值必须为整数)
  4. (integer) 24
  5. 127.0.0.1:6379> incr whd
  6. (integer) 25
  7. 127.0.0.1:6379> decr whd #DECR递减数值(key值必须为整数)
  8. (integer) 24
  9. 127.0.0.1:6379> decr whd
  10. (integer) 23
  11. 127.0.0.1:6379> incrby whd 10 #按照指定数值进行递增
  12. (integer) 33
  13. 127.0.0.1:6379> get whd
  14. "33"
  15. 127.0.0.1:6379> decrby whd 5 #按照指定数值进行递减
  16. (integer) 28
  17. 127.0.0.1:6379>
复制代码

getset返回原有值然后给key设置新值

  1. 127.0.0.1:6379> getset whd 22 #先返回原有key值50,然后给予key新值22(新的值不会打印显示)
  2. "50"
  3. 127.0.0.1:6379> get whd #查看key新的值
  4. "22"
  5. 127.0.0.1:6379> getset whd 66
  6. "22"
  7. 127.0.0.1:6379> get whd
  8. "66"
复制代码

setex支持key的过期时间

  1. 127.0.0.1:6379> setex ttt 10 66 #指定ttt10秒过期
  2. OK
  3. 127.0.0.1:6379> ttl ttt #ttl可查看生命周期
  4. (integer) 3
  5. 127.0.0.1:6379> ttl ttt #查出-2表示已经过期,-1表示永久保存
  6. (integer) -2
  7. 127.0.0.1:6379> get ttt
  8. (nil)
  9. 127.0.0.1:6379> ttl whd
  10. (integer) -1127.0.0.1:6379> setnx whd 22
  11. (integer) 0
  12. 127.0.0.1:6379> setnx whd 22 #setnx可以对键进行判断,有则操作无效,无则创建
  13. (integer) 0
复制代码

批量创建,批量查看

  1. 127.0.0.1:6379> mset aa 10 bb 20 cc 30
  2. OK
  3. 127.0.0.1:6379> keys *
  4. 1) "counter:__rand_int__"
  5. 2) "cc"
  6. 3) "myset:__rand_int__"
  7. 4) "whd"
  8. 5) "aa"
  9. 6) "key:__rand_int__"
  10. 7) "mylist"
  11. 8) "bb"
  12. 127.0.0.1:6379> mget aa bb cc
  13. 1) "10"
  14. 2) "20"
  15. 3) "30"
  16. 127.0.0.1:6379> msetnx aa 10 jj 10 dd 10 #msetnx可进行判断,只要有一个键存在,则操作失效,当键都不存在才创建key
  17. (integer) 0
  18. 127.0.0.1:6379> msetnx jj 10 dd 10
  19. (integer) 1
复制代码

List数据范例

  1. 127.0.0.1:6379> lpush age a b c d e #lpush由左插入多个键值,
  2. (integer) 5
  3. 127.0.0.1:6379> lrange age 0 -1
  4. #lrange查看list数据类型的key值,后面要加查看的范围,这里0表示第一个数,-1表示最后一个数(也可以输入key值个数),
  5. 1) "e"
  6. 2) "d"
  7. 3) "c"
  8. 4) "b"
  9. 5) "a"
  10. 127.0.0.1:6379> lrange age 1 2
  11. 1) "d"
  12. 2) "c"
  13. 127.0.0.1:6379> lrange age 3 5
  14. 1) "b"
  15. 2) "a"
  16. 127.0.0.1:6379> lpushx age g #lpushx插入一个元素在一个已存在的key的开头
  17. (integer) 6
  18. 127.0.0.1:6379> lrange age 0 -1
  19. 1) "g"
  20. 2) "e"
  21. 3) "d"
  22. 4) "c"
  23. 5) "b"
  24. 6) "a"
  25. 127.0.0.1:6379> lpop age #lpop移除首个元素
  26. "g"
  27. 127.0.0.1:6379> lrange age 0 -1
  28. 1) "e"
  29. 2) "d"
  30. 3) "c"
  31. 4) "b"
  32. 5) "a"
  33. 127.0.0.1:6379> lpop age
  34. "e"
  35. 127.0.0.1:6379> lrange age 0 -1
  36. 1) "d"
  37. 2) "c"
  38. 3) "b"
  39. 4) "a"
  40. 127.0.0.1:6379> llen age #获取key值个数
  41. (integer) 4
复制代码

LREM/LSET/LINDEX/LTRIM

  1. 127.0.0.1:6379> del age
  2. (integer) 1
  3. 127.0.0.1:6379> lpush age a b c d d a c
  4. (integer) 7
  5. 127.0.0.1:6379> lrange age 0 -1
  6. 1) "c"
  7. 2) "a"
  8. 3) "d"
  9. 4) "d"
  10. 5) "c"
  11. 6) "b"
  12. 7) "a"
  13. 127.0.0.1:6379> lrem age 1 a #指定删除从开头开始n个重复值
  14. (integer) 1
  15. 127.0.0.1:6379> lrange age 0 -1
  16. 1) "c"
  17. 2) "d"
  18. 3) "d"
  19. 4) "c"
  20. 5) "b"
  21. 6) "a"
  22. 127.0.0.1:6379> lrem age 2 c
  23. (integer) 2
  24. 127.0.0.1:6379> lrange age 0 -1
  25. 1) "d"
  26. 2) "d"
  27. 3) "b"
  28. 4) "a"
  29. 127.0.0.1:6379> lindex age 1 #获取索引值对应的key值,索引值从上往下从0开始
  30. "d"
  31. 127.0.0.1:6379> lindex age 3
  32. "a"
  33. 127.0.0.1:6379> lset age 1 a #基于已有的索引值更换key值
  34. OK
  35. 127.0.0.1:6379> lset age 3 c
  36. OK
  37. 127.0.0.1:6379> lrange age 0 -1
  38. 1) "d"
  39. 2) "a"
  40. 3) "b"
  41. 4) "c"
  42. 127.0.0.1:6379> lrange whd1 0 -1
  43. 1) "a"
  44. 2) "b"
  45. 3) "c"
  46. 4) "d"
  47. 5) "c"
  48. 6) "b"
  49. 7) "b"
  50. 127.0.0.1:6379> ltrim whd1 0 3 #仅保留索引范围的元素
  51. OK
  52. 127.0.0.1:6379> lrange whd1 0 -1
  53. 1) "a"
  54. 2) "b"
  55. 3) "c"
  56. 4) "d"
复制代码

在指定元素的左/右插入元素

  1. 127.0.0.1:6379> linsert whd1 before a a1 #在a的前面插入元素a1
  2. (integer) 5
  3. 127.0.0.1:6379> lrange whd1 0 -1
  4. 1) "a1"
  5. 2) "a"
  6. 3) "b"
  7. 4) "c"
  8. 5) "d"
  9. 127.0.0.1:6379> linsert whd1 after a a2 #在a的后面插入元素a2
  10. (integer) 6
  11. 127.0.0.1:6379> lrange whd1 0 -1
  12. 1) "a1"
  13. 2) "a"
  14. 3) "a2"
  15. 4) "b"
  16. 5) "c"
  17. 6) "d"
复制代码

由右插入元素

  1. 127.0.0.1:6379> rpush whd2 a b c d e
  2. (integer) 5
  3. 127.0.0.1:6379> lrange whd2 0 -1
  4. 1) "a"
  5. 2) "b"
  6. 3) "c"
  7. 4) "d"
  8. 5) "e"
  9. 127.0.0.1:6379> rpushx whd2 a1 #在最后插入元素
  10. (integer) 6
  11. 127.0.0.1:6379> lrange whd2 0 -1
  12. 1) "a"
  13. 2) "b"
  14. 3) "c"
  15. 4) "d"
  16. 5) "e"
  17. 6) "a1"
  18. 127.0.0.1:6379> rpop whd2 #移除最后一个元素
  19. "a1"
  20. 127.0.0.1:6379> lrange whd2 0 -1
  21. 1) "a"
  22. 2) "b"
  23. 3) "c"
  24. 4) "d"
  25. 5) "e"
  26. 127.0.0.1:6379> rpoplpush whd2 whd2 #组合使用,右弹出左插入,相当于把原key值最后一个元素插入到目标key值得最前面
  27. "e"
  28. 127.0.0.1:6379> lrange whd2 0 -1
  29. 1) "e"
  30. 2) "a"
  31. 3) "b"
  32. 4) "c"
  33. 5) "d"
  34. 127.0.0.1:6379> rpoplpush whd2 whd1
  35. "d"
  36. 127.0.0.1:6379> lrange whd1 0 -1
  37. 1) "d"
  38. 2) "a1"
  39. 3) "a"
  40. 4) "a2"
  41. 5) "b"
  42. 6) "c"
  43. 7) "d"
复制代码

Hash(散列)数据范例

  1. hash用于存储对象,可以采用hash格式(对象列别和ID)构成键名
复制代码
  1. 127.0.0.1:6379> hset caiwu name "lisi" #创建键,设置字段为name,值为lisi
  2. (integer) 1
  3. 127.0.0.1:6379> hget caiwu name
  4. "lisi"
  5. 127.0.0.1:6379> hset caiwu name "wangwu" #为该键添加字段name1,值为wangwu
  6. (integer) 0
  7. 127.0.0.1:6379> hset caiwu name1 "wangwu"
  8. (integer) 1
  9. 127.0.0.1:6379> hexists caiwu name #判断caiwu键中name字段是否存在
  10. (integer) 1
  11. 127.0.0.1:6379> hlen caiwu #查看key值里面右多少个字段
  12. (integer) 2
  13. 127.0.0.1:6379> hdel caiwu name #删除字段
  14. (integer) 1
  15. 127.0.0.1:6379> hexists caiwu name
  16. (integer) 0
  17. 127.0.0.1:6379> hsetnx caiwu name "aa" #添加字段
  18. (integer) 1
  19. 127.0.0.1:6379> hget caiwu name
  20. "aa"
  21. 127.0.0.1:6379> hset caiwu name2 2
  22. (integer) 1
  23. 127.0.0.1:6379> hincrby caiwu name2 2 #递增字段值
  24. (integer) 4
  25. 127.0.0.1:6379> hincrby caiwu name2 -2 #递减字段值
  26. (integer) 2
  27. 127.0.0.1:6379> hgetall caiwu #查看key中所有信息
  28. 1) "name1"
  29. 2) "wangwu"
  30. 3) "name"
  31. 4) "aa"
  32. 5) "name2"
  33. 6) "2"
  34. 127.0.0.1:6379> hmget caiwu name name1 #查看key的多个字段值
  35. 1) "aa"
  36. 2) "wangwu"
  37. 127.0.0.1:6379> hkeys caiwu #查看键的多个字段
  38. 1) "name1"
  39. 2) "name"
  40. 3) "name2"
  41. 127.0.0.1:6379> hvals caiwu #查看键中所有的字段值
  42. 1) "wangwu"
  43. 2) "aa"
  44. 3) "2"
复制代码

set数据范例 (无序集合)

  1. 元素具有唯一性,不允许存在重复的成员,多个集合类型之间可以进行并集、交集和差集运算
复制代码
  1. 127.0.0.1:6379> keys *
  2. 1) "counter:__rand_int__"
  3. 2) "myset:__rand_int__"
  4. 3) "key:__rand_int__"
  5. 4) "mylist"
  6. 5) "caiwu"
  7. 127.0.0.1:6379> sadd whd a b c d #添加键,设置键值
  8. (integer) 4
  9. 127.0.0.1:6379> smembers whd #查看键值
  10. 1) "a"
  11. 2) "c"
  12. 3) "b"
  13. 4) "d"
  14. 127.0.0.1:6379> scard whd #查看key值个数
  15. (integer) 4
  16. 127.0.0.1:6379> sismember whd a #判断key值是否存在,存在则返回1,不存在则返回0
  17. (integer) 1
  18. 127.0.0.1:6379> sismember whd g
  19. (integer) 0
  20. 127.0.0.1:6379> srandmember whd #srandmember表示随机返回一个成员
  21. "b"
  22. 127.0.0.1:6379> srandmember whd
  23. "a"
复制代码

随机移除键值

  1. 127.0.0.1:6379> spop whd #随机移除数值,后面不加参数则默认移除一个,可以添加数值,表示移除该数值个数的元素
  2. "a"
  3. 127.0.0.1:6379> smembers whd
  4. 1) "c"
  5. 2) "b"
  6. 3) "d"
  7. 127.0.0.1:6379> spop whd 2
  8. 1) "d"
  9. 2) "b"
  10. 127.0.0.1:6379> smembers whd
  11. 1) "c"
  12. 127.0.0.1:6379> sadd whd a b e f #添加元素,有重复值不会插入
  13. (integer) 4
  14. 127.0.0.1:6379> smembers whd
  15. 1) "a"
  16. 2) "e"
  17. 3) "b"
  18. 4) "c"
  19. 5) "f"
  20. 127.0.0.1:6379> srem whd a e b #移除指定元素
  21. (integer) 3
  22. 127.0.0.1:6379> smembers whd
  23. 1) "f"
  24. 2) "c"
  25. 127.0.0.1:6379> sadd whd1 a b #设置新键
  26. (integer) 2
  27. 127.0.0.1:6379> smove whd whd1 c #讲whd中的c移动到whd1中
  28. (integer) 1
  29. 127.0.0.1:6379> smembers whd
  30. 1) "f"
  31. 127.0.0.1:6379> smembers whd1
  32. 1) "a"
  33. 2) "c"
  34. 3) "b"
复制代码

Sorted Set 数据范例 (有序集合)

  1. 元素类型为String,元素具有唯一性,不能重复,每个元素都会关联一个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同,可以用于在线游戏的积分排行榜
复制代码
  1. 127.0.0.1:6379> zadd whd 1 "zhansan" #添加一个数值为1的成员zhansan
  2. (integer) 1
  3. 127.0.0.1:6379> zadd whd 2 "lisi" 3 "wangwu" #添加两个成员,对应数值为2,3
  4. (integer) 2
  5. 127.0.0.1:6379> zrange whd 0 -1 #查看whd的各元素值
  6. 1) "zhansan"
  7. 2) "lisi"
  8. 3) "wangwu"
  9. 127.0.0.1:6379> zrange whd 0 -1 WITHSCORES #WITHSCORES表示返回的结果中包含每个成员及其分数,否则返回成员
  10. 1) "zhansan"
  11. 2) "1"
  12. 3) "lisi"
  13. 4) "2"
  14. 5) "wangwu"
  15. 6) "3"
  16. 127.0.0.1:6379> zrank whd "zhansan" #获取成员对应的位置索引,0代表第一个,nil表示不存在
  17. (integer) 0
  18. 127.0.0.1:6379> zrank whd "lisi"
  19. (integer) 1
  20. 127.0.0.1:6379> zcard whd #查看成员数
  21. (integer) 3
  22. 127.0.0.1:6379> zcount whd 2 3 #分数满足表达式2<= score <=3的成员数量
  23. (integer) 2
  24. 127.0.0.1:6379> zcount whd 1 2
  25. (integer) 2
  26. 127.0.0.1:6379> zrem whd lisi #删除指定成员
  27. (integer) 1
  28. 127.0.0.1:6379> zrange whd 0 -1
  29. 1) "zhansan"
  30. 2) "wangwu"
  31. 127.0.0.1:6379> zscore whd zhansan #返回成员所对应的分数
  32. "1"
  33. 127.0.0.1:6379> zrange whd 0 -1 WITHSCORES
  34. 1) "zhansan"
  35. 2) "1"
  36. 3) "wangwu"
  37. 4) "3"
  38. 127.0.0.1:6379> zincrby whd 5 zhansan #为成员的分数增加指定值
  39. "6"
  40. 127.0.0.1:6379> zrange whd 0 -1 WITHSCORES
  41. 1) "wangwu"
  42. 2) "3"
  43. 3) "zhansan"
  44. 4) "6"
  45. 127.0.0.1:6379> zadd whd 2 zhansan #添加已有成员设置分数时,会覆盖原因成员和分数,并返回为0.表示没有增加元素,但不表示没有修改
  46. (integer) 0
  47. 127.0.0.1:6379> zrange whd 0 -1 WITHSCORES
  48. 1) "zhansan"
  49. 2) "2"
  50. 3) "wangwu"
  51. 4) "3"
  52. 127.0.0.1:6379> zrangebyscore whd 1 2 #获取分数满足1<=score<=2的成员
  53. 1) "zhansan"
  54. 2) "lisi"
  55. 127.0.0.1:6379> zrange whd 0 -1
  56. 1) "lisi"
  57. 2) "zhansan"
  58. 3) "xuyi"
  59. 4) "wangwu"
  60. 127.0.0.1:6379> zrangebyscore whd -inf +inf limit 1 3
  61. #-inf表示第一个成员,+inf表示最后一个成员,这里表示匹配所有成员,然后limit显示索引1后面的三个成员
  62. 1) "zhansan"
  63. 2) "xuyi"
  64. 3) "wangwu"
  65. 127.0.0.1:6379> zremrangebyrank whd 0 1 #删除位置索引满足表达式0<=rank<=1的元素
  66. (integer) 2
  67. 127.0.0.1:6379> zcard whd
  68. (integer) 2
  69. 127.0.0.1:6379> zrange whd 0 -1
  70. 1) "xuyi"
  71. 2) "wangwu"
复制代码

排序

  1. 127.0.0.1:6379> zadd whd1 1 a 2 b 3 d 4 e
  2. (integer) 4
  3. 127.0.0.1:6379> zrevrange whd 0 -1 withscores
  4. 1) "wangwu"
  5. 2) "3"
  6. 3) "xuyi"
  7. 4) "2"
  8. 127.0.0.1:6379> zrevrange whd1 0 -1 withscores #以位置索引从高到低显示区间的值
  9. 1) "e"
  10. 2) "4"
  11. 3) "d"
  12. 4) "3"
  13. 5) "b"
  14. 6) "2"
  15. 7) "a"
  16. 8) "1"
复制代码

到此这篇关于Redis数据库安装部署及基本操作的文章就先容 到这了,更多干系 Redis安装部署内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的干系 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 丁侦球 | 2021-9-14 01:31:18 | 显示全部楼层
admin楼主,替我问候您主治大夫!
回复

使用道具 举报

avatar Vonice | 2021-9-18 18:43:48 | 显示全部楼层
今天的心情很不错啊
回复

使用道具 举报

avatar 晴空万里659 | 2021-9-20 19:18:59 | 显示全部楼层
admin楼主很有激情啊!
回复

使用道具 举报

avatar 匣中剑他娘官 | 2021-9-21 12:24:35 | 显示全部楼层
admin楼主是男的还是女的?
回复

使用道具 举报

avatar 123457399 | 2021-9-23 14:31:00 | 显示全部楼层
每天顶顶贴,一身轻松啊!
回复

使用道具 举报

avatar hedeafmz28 | 2021-10-4 10:00:38 | 显示全部楼层
我对admin楼主的敬仰犹如滔滔江水绵延不绝!
回复

使用道具 举报

avatar 楚一帆 | 2021-10-10 12:25:50 | 显示全部楼层
admin楼主是好人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则