|
|
|
|
移动端

打好Redis的基础,你可能需要这些常用命令

Redis 是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串、哈希、链表、集合与有序集合,而且支持各种不同方式的排序,所以命令比较丰富,很容易混淆。

作者:佚名来源:ITPUB|2018-02-02 14:11

人工智能+区块链的发展趋势及应用调研报告


打好Redis的基础,你可能需要这些常用命令

一、背景介绍

Redis 是一个开源的,先进的key-value存储。它通常被称为数据结构服务器,因为键可以包含字符串、哈希、链表、集合与有序集合,而且支持各种不同方式的排序,所以命令比较丰富,很容易混淆。

二、Redis 常用命令

1、工具命令

1)、redis-server 

启动redis服务进程的工具命令

  1. #指定配置文件启动服务 
  2.  
  3. redis-server redis.conf 
  4.  
  5. #指定端口启动服务 
  6.  
  7. redis-server --port 6379

2)、redis-cli

redis 客户端工具

  1. #使用socket连接redis服务器 
  2.  
  3. redis-cli -s /tmp/redis.sock 
  4.  
  5. #不使用socket连接redis服务器 
  6.  
  7. redis-cli 

3)、redis-benchmark

redis 的性能测试工具

  1. #使用默认参数测试 
  2.  
  3. redis-benchmark 
  4.  
  5. #自定义参数测试 
  6.  
  7. redis-benchmark -n 1000000 --csv

4)、redis-check-dump

redis 检查修复本地数据文件工具

  1. # redis-check-dump dump.rdb 

5)、redis-check-aof

redis 检查修复AOF日志文件工具

  1. # redis-check-aof appendonly.aof 

6)、redis-sentinel

redis 集群管理工具

2、通用命令

auth Redis认证命令,执行其他命令前,必须先进行认证(前提是在配置文件中设置了认证参数)

ping 测试客户端和服务器之间的联通,返回值为PONG,表示联通

config get * 获取所有配置参数

config set config_name config_value 设置配置参数值

info 返回服务器信息

exist 查看当前库中是否存在某个key

ttl 获取键的有效时长

expire 设置键的过期时间

persist key_name 移除某个键的过期时间

del 删除某个键

select n 切换到n的数据库,redis默认的数据库是0-15,共16个数据库

move key_name n 将当前库的键移动到其他数据库

type key_name 返回键的数据类型

dbsize 获取当前库中所有键的数量

key * 获取当前所有key(当键数量多是,会hang死,慎用)

flushdb 删除当前库中的所有key

flushall 删除所有库中的所有key

save 创建当前库的备份

bgsave 同save,但是是后台备份,不阻塞主进程

eval 执行lua脚本

3、类型相关命令

1)、STRING

set 添加键值对,多次设置会覆盖原来的值

get 获取键的值

incr/decr 自增/自减(前提是键值是整型)

incrby/decrby 指定步长增加减少(q前提是键值是整型)

strlen 获取键的长度

append 向指定键追加值,返回字符串长度

setnx 判断键是否存在,存在返回0,否则返回1,不会覆盖原来值

getrange 根据指定下标获取键的值

Demo:

  1. 127.0.0.1:6379> get number  
  2.  
  3. "20" 
  4.  
  5. 127.0.0.1:6379> incr number  
  6.  
  7. (integer) 21 
  8.  
  9. 127.0.0.1:6379> decr number  
  10.  
  11. (integer) 20 
  12.  
  13. 127.0.0.1:6379> incrby number 5  
  14.  
  15. (integer) 25 
  16.  
  17. 127.0.0.1:6379> append number hello  
  18.  
  19. (integer) 7 
  20.  
  21. 127.0.0.1:6379> strlen number  
  22.  
  23. (integer) 7 
  24.  
  25. 127.0.0.1:6379> setnx number hello  
  26.  
  27. (integer) 0 
  28.  
  29. 127.0.0.1:6379> getrange number 0 5  
  30.  
  31. "25hell" 

2)、LISTS

lpush 在列表前面添加一个或多个值

rpush 在列表后面添加一个或多个值

lrange 根据指定下标获取列表中的元素

lpop 获取并取出列表中的第一个元素

llen 获取列表长度

Demo:

  1. 127.0.0.1:6379> lpush mylists apple orange pear  
  2.  
  3. (integer) 3 
  4.  
  5. 127.0.0.1:6379> llen mylists  
  6.  
  7. (integer) 3 
  8.  
  9. 127.0.0.1:6379> lrange mylists 0 -1  
  10.  
  11. 1) "pear" 
  12.  
  13. 2) "orange" 
  14.  
  15. 3) "apple" 
  16.  
  17. 127.0.0.1:6379> rpush mylists banana 
  18.  
  19. (integer) 4 
  20.  
  21. 127.0.0.1:6379> lrange mylists 0 -1  
  22.  
  23. 1) "pear" 
  24.  
  25. 2) "orange" 
  26.  
  27. 3) "apple" 
  28.  
  29. 4) "banana" 
  30.  
  31. 127.0.0.1:6379> lpop mylists 
  32.  
  33. "pear" 
  34.  
  35. 127.0.0.1:6379> lset mylists 0 four 
  36.  
  37. OK 
  38.  
  39. 127.0.0.1:6379> lrange mylists 0 -1  
  40.  
  41. 1) "four" 
  42.  
  43. 2) "apple" 
  44.  
  45. 3) "banana" 

3)、SETS

sadd 向集合中添加值

smembers 查看集合中的值

sismember 判断某元素是否是集合中元素

sunion 返回两个集合中的并集

sdiff 返回两个集合中的差集(将写在前面的集合作为参照)

sinter 返回两个集合中的交集

scard 返回集合中元素个数

srem 删除集合中指定值

Demo:

  1. 127.0.0.1:6379> sadd myset one two three  
  2.  
  3. (integer) 3 
  4.  
  5. 127.0.0.1:6379> sadd myset1 two redis mysql  
  6.  
  7. (integer) 3 
  8.  
  9. 127.0.0.1:6379> smembers myset  
  10.  
  11. 1) "three" 
  12.  
  13. 2) "two" 
  14.  
  15. 3) "one" 
  16.  
  17. 127.0.0.1:6379> smembers myset1  
  18.  
  19. 1) "two" 
  20.  
  21. 2) "mysql" 
  22.  
  23. 3) "redis" 
  24.  
  25. 127.0.0.1:6379> sdiff myset myset1  
  26.  
  27. 1) "three" 
  28.  
  29. 2) "one" 
  30.  
  31. 127.0.0.1:6379> sinter myset myset1  
  32.  
  33. 1) "two" 
  34.  
  35. 127.0.0.1:6379> sunion myset myset1  
  36.  
  37. 1) "two" 
  38.  
  39. 2) "three" 
  40.  
  41. 3) "mysql" 
  42.  
  43. 4) "one" 
  44.  
  45. 5) "redis" 
  46.  
  47. 127.0.0.1:6379> scard myset  
  48.  
  49. (integer) 3 
  50.  
  51. 127.0.0.1:6379> sismember myset redis 
  52.  
  53. (integer) 0 
  54.  
  55. 127.0.0.1:6379> srem myset two  
  56.  
  57. (integer) 1 
  58.  
  59. 127.0.0.1:6379> smembers myset  
  60.  
  61. 1) "three" 
  62.  
  63. 2) "one" 

4)、SORTED SETS

zadd 将键插入有序集合,并指定顺序

zrange 取出指定顺序的元素

zscore 返回集合中的顺序

zcount 返回集合中score在给定区间的数量

zrem 删除集合中指定元素

zrank 返回名称key中原素的排名

Demo:

  1. 127.0.0.1:6379> zadd sset 1 one 2 two 3 three  
  2.  
  3. (integer) 3 
  4.  
  5. 127.0.0.1:6379> zadd sset 3 three  
  6.  
  7. (integer) 0 
  8.  
  9. 127.0.0.1:6379> zrange sset 0 -1 withscores  
  10.  
  11. 1) "one" 
  12.  
  13. 2) "1" 
  14.  
  15. 3) "two" 
  16.  
  17. 4) "2" 
  18.  
  19. 5) "three" 
  20.  
  21. 6) "3" 
  22.  
  23. 127.0.0.1:6379> zrank sset one  
  24.  
  25. (integer) 0 
  26.  
  27. 127.0.0.1:6379> zrank sset two  
  28.  
  29. (integer) 1 
  30.  
  31. 127.0.0.1:6379> zcard sset  
  32.  
  33. (integer) 3 
  34.  
  35. 127.0.0.1:6379> zincrby sset 2 two  
  36.  
  37. "4" 
  38.  
  39. 127.0.0.1:6379> zrange sset 0 -1 withscores  
  40.  
  41. 1) "one" 
  42.  
  43. 2) "1" 
  44.  
  45. 3) "three" 
  46.  
  47. 4) "3" 
  48.  
  49. 5) "two" 
  50.  
  51. 6) "4" 
  52.  
  53. 127.0.0.1:6379> zrem sset three  
  54.  
  55. (integer) 1 
  56.  
  57. 127.0.0.1:6379> zrange sset 0 -1 withscores  
  58.  
  59. 1) "one" 
  60.  
  61. 2) "1" 
  62.  
  63. 3) "two" 
  64.  
  65. 4) "4" 

5)、HASHES

hset 返回hash 域为指定值,如果key不存在,则先创建

hget 获取hash 域中指定的key值

hmset 同时批量设置多个域

hincrby 指定hash 域加上给定的值

hexists 指定field是否存在,存在返回1,否则返回2

hlen 返回指定hash 表中field中的数量

Demo:

  1. 127.0.0.1:6379> hset user name jack  
  2.  
  3. (integer) 1 
  4.  
  5. 127.0.0.1:6379> hget user name  
  6.  
  7. "jack" 
  8.  
  9. 127.0.0.1:6379> hsetnx user name jack  
  10.  
  11. (integer) 0 
  12.  
  13. 127.0.0.1:6379> hmset user1 name bob sex man age 11  
  14.  
  15. OK 
  16.  
  17. 127.0.0.1:6379> hmget user1 name sex age  
  18.  
  19. 1) "bob" 
  20.  
  21. 2) "man" 
  22.  
  23. 3) "11" 
  24.  
  25. 127.0.0.1:6379> hexists user1 score  
  26.  
  27. (integer) 0 
  28.  
  29. 127.0.0.1:6379> hlen user1  
  30.  
  31. (integer) 3 
  32.  
  33. 127.0.0.1:6379> hincrby user1 age 5  
  34.  
  35. (integer) 16 
  36.  
  37. 127.0.0.1:6379> hkeys user1  
  38.  
  39. 1) "name" 
  40.  
  41. 2) "sex" 
  42.  
  43. 3) "age" 
  44.  
  45. 127.0.0.1:6379> hdel user1 sex  
  46.  
  47. (integer) 1 
  48.  
  49. 127.0.0.1:6379> hgetall user1  
  50.  
  51. 1) "name" 
  52.  
  53. 2) "bob" 
  54.  
  55. 3) "age" 
  56.  
  57. 4) "16" 

4、其他命令

1)、事务

multi 开启一个事务

exec 执行事务

discard 撤销事务

watch 监视数据库键,若发生改变,返回空

Demo:

  1. 127.0.0.1:6379> watch "csdn" 
  2.  
  3. OK 
  4.  
  5. 127.0.0.1:6379> multi  
  6.  
  7. OK 
  8.  
  9. 127.0.0.1:6379> set csdn blob  
  10.  
  11. QUEUED 
  12.  
  13. 127.0.0.1:6379> get csdn  
  14.  
  15. QUEUED 
  16.  
  17. 127.0.0.1:6379> exec  
  18.  
  19. 1) OK 
  20.  
  21. 2) "blob" 

2)、复制

info replication 获取复制信息

slaveof 建立复制关系

sync 同步

3)、订阅发布

subscribe 订阅一个或多个频道

publish 向某一频道发送信息

【编辑推荐】

  1. 如何在数据库中查找和消除重复的数据?
  2. 关系型数据库RDBMS的旧与新 -- 谈谈NewSQL
  3. 数据库的七种武器,快来看看!
  4. MySQL数据库开发常见问题及优化
  5. 一文读懂大数据时代的结构化存储数据库——HBase
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

SQL Server 2005数据挖掘与商业智能完全解决方案

本书以BI解决方案的体系结构为中心,以SQL Server 2005为载体,将着眼点放在数据挖掘和商业智能上,详细讲解了数据报表、数据分析和数据挖...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊