首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

一、背景介绍

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

二、Redis 常用命令

1

工具命令

1、redis-server

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

#指定配置文件启动服务

redis-server redis.conf

#指定端口启动服务

redis-server --port 6379

2、redis-cli

redis 客户端工具

#使用socket连接redis服务器

redis-cli -s /tmp/redis.sock

#不使用socket连接redis服务器

redis-cli

3、redis-benchmark

redis 的性能测试工具

#使用默认参数测试

redis-benchmark

#自定义参数测试

redis-benchmark -n 1000000 --csv

4、redis-check-dump

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

#redis-check-dump dump.rdb

5、redis-check-aof

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

# 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:

127.0.0.1:6379> get number

"20"

127.0.0.1:6379> incr number

(integer) 21

127.0.0.1:6379> decr number

(integer) 20

127.0.0.1:6379> incrby number 5

(integer) 25

127.0.0.1:6379> append number hello

(integer) 7

127.0.0.1:6379> strlen number

(integer) 7

127.0.0.1:6379> setnx number hello

(integer) 0

127.0.0.1:6379> getrange number 0 5

"25hell"

2LISTS

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

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

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

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

llen 获取列表长度

Demo:

127.0.0.1:6379> lpush mylists apple orange pear

(integer) 3

127.0.0.1:6379> llen mylists

(integer) 3

127.0.0.1:6379> lrange mylists 0 -1

1) "pear"

2) "orange"

3) "apple"

127.0.0.1:6379> rpush mylists banana

(integer) 4

127.0.0.1:6379> lrange mylists 0 -1

1) "pear"

2) "orange"

3) "apple"

4) "banana"

127.0.0.1:6379> lpop mylists

"pear"

127.0.0.1:6379> lset mylists 0 four

OK

127.0.0.1:6379> lrange mylists 0 -1

1) "four"

2) "apple"

3) "banana"

3SETS

sadd 向集合中添加值

smembers 查看集合中的值

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

sunion 返回两个集合中的并集

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

sinter 返回两个集合中的交集

scard 返回集合中元素个数

srem 删除集合中指定值

Demo:

127.0.0.1:6379> sadd myset one two three

(integer) 3

127.0.0.1:6379> sadd myset1 two redis mysql

(integer) 3

127.0.0.1:6379> smembers myset

1) "three"

2) "two"

3) "one"

127.0.0.1:6379> smembers myset1

1) "two"

2) "mysql"

3) "redis"

127.0.0.1:6379> sdiff myset myset1

1) "three"

2) "one"

127.0.0.1:6379> sinter myset myset1

1) "two"

127.0.0.1:6379> sunion myset myset1

1) "two"

2) "three"

3) "mysql"

4) "one"

5) "redis"

127.0.0.1:6379> scard myset

(integer) 3

127.0.0.1:6379> sismember myset redis

(integer) 0

127.0.0.1:6379> srem myset two

(integer) 1

127.0.0.1:6379> smembers myset

1) "three"

2) "one"

4SORTED SETS

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

zrange 取出指定顺序的元素

zscore 返回集合中的顺序

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

zrem 删除集合中指定元素

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

Demo:

127.0.0.1:6379> zadd sset 1 one 2 two 3 three

(integer) 3

127.0.0.1:6379> zadd sset 3 three

(integer) 0

127.0.0.1:6379> zrange sset 0 -1 withscores

1) "one"

2) "1"

3) "two"

4) "2"

5) "three"

6) "3"

127.0.0.1:6379> zrank sset one

(integer) 0

127.0.0.1:6379> zrank sset two

(integer) 1

127.0.0.1:6379> zcard sset

(integer) 3

127.0.0.1:6379> zincrby sset 2 two

"4"

127.0.0.1:6379> zrange sset 0 -1 withscores

1) "one"

2) "1"

3) "three"

4) "3"

5) "two"

6) "4"

127.0.0.1:6379> zrem sset three

(integer) 1

127.0.0.1:6379> zrange sset 0 -1 withscores

1) "one"

2) "1"

3) "two"

4) "4"

5HASHES

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

hget 获取hash 域中指定的key值

hmset 同时批量设置多个域

hincrby 指定hash 域加上给定的值

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

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

Demo:

127.0.0.1:6379> hset user name jack

(integer) 1

127.0.0.1:6379> hget user name

"jack"

127.0.0.1:6379> hsetnx user name jack

(integer) 0

127.0.0.1:6379> hmset user1 name bob sex man age 11

OK

127.0.0.1:6379> hmget user1 name sex age

1) "bob"

2) "man"

3) "11"

127.0.0.1:6379> hexists user1 score

(integer) 0

127.0.0.1:6379> hlen user1

(integer) 3

127.0.0.1:6379> hincrby user1 age 5

(integer) 16

127.0.0.1:6379> hkeys user1

1) "name"

2) "sex"

3) "age"

127.0.0.1:6379> hdel user1 sex

(integer) 1

127.0.0.1:6379> hgetall user1

1) "name"

2) "bob"

3) "age"

4) "16"

4

其他命令

1事务

multi 开启一个事务

exec 执行事务

discard 撤销事务

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

Demo:

127.0.0.1:6379> watch "csdn"

OK

127.0.0.1:6379> multi

OK

127.0.0.1:6379> set csdn blob

QUEUED

127.0.0.1:6379> get csdn

QUEUED

127.0.0.1:6379> exec

1) OK

2) "blob"

2复制

info replication 获取复制信息

slaveof 建立复制关系

sync 同步

3订阅发布

subscribe 订阅一个或多个频道

publish 向某一频道发送信息

本周Daily

近期微学堂

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180202B0ECP400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券