跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

4、redis常用命令和数据类型(http://redisdoc.com/)

1、常用命令 INFO:显示当前节点redis运行状态

127.0.0.1:6379> info server

# Server redis_version:5.0.9 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:6cf2e2ee2f3539a2 redis_mode:standalone os:Linux 3.10.0-693.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll atomicvar_api:atomic-builtin gcc_version:4.8.5 process_id:6332 run_id:7cbc7d1487ca4359faa02a95f57bea1efe3ddfbd tcp_port:6379 uptime_in_seconds:819 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:831696 executable:/apps/redis/bin/redis-server config_file:/apps/redis/etc/redis_6379.conf

select:切换数据库(0-15) 注:当使用redis cluster时,就不支持多个数据库了,只支持0号数据库

127.0.0.1:6379[15]> select 0

OK 127.0.0.1:6379> select 16 (error) ERR DB index is out of range

keys:查看所有key(禁止使用)

BGSAVE:手动备份RDB文件

# 交互式

127.0.0.1:6379> bgsave Background saving started 127.0.0.1:6379>

# 非交互式 [root@vms228 ~]# redis-cli -a redis --no-auth-warning bgsave Background saving started

DBSIZE:查看key的数量 FLUSHDB(慎用):删除当前库所有key FLUSHALL(慎用):删除所有库的所有key SHUTDOWN:正常关闭redis(安全),关闭之前会持久化数据。

2、数据类型 2.1、字符串

EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等

同于执行 SETEX key seconds value 。

PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。

执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value 。

NX : 只在键不存在时, 才对键进行设置操作。

执行 SET key value NX 的效果等同于执行 SETNX key value 。

XX : 只在键已经存在时, 才对键进行设置操作。

2.1.1、set\get

# 设置key-value

127.0.0.1:6379> set class linux OK

# 获取key-value 127.0.0.1:6379> get class "linux" 2.1.2、获取key的有效期

127.0.0.1:6379> ttl class

(integer) -1

2.1.3、设置key-value有效期EX

127.0.0.1:6379> set hongbao 100 EX 10

OK 127.0.0.1:6379> ttl hongbao (integer) 6 127.0.0.1:6379> ttl hongbao (integer) -2 127.0.0.1:6379> get hongbao (nil) 2.1.4、当key的value之存在时执行 XX

127.0.0.1:6379> get class

"linux" 127.0.0.1:6379> set class linux2 XX OK 127.0.0.1:6379> get class "linux2" 2.1.5、当key的value值不存在时执行 NX

127.0.0.1:6379> set class linux3 NX

(nil) 127.0.0.1:6379> get class "linux2" 2.1.6、查看key类型

127.0.0.1:6379> type class

string

2.1.7、删除一个或多个key

127.0.0.1:6379> del k1

(integer) 1 127.0.0.1:6379> del k2 k3 (integer) 2 2.1.8、批量插入、获取mset/mget

127.0.0.1:6379> mset k1 v1 k2 v2

OK 127.0.0.1:6379> mget k1 k2 1) "v1" 2) "v2" 2.1.9、追加value值:append

127.0.0.1:6379> get k2

"v2" 127.0.0.1:6379> append k2 " append" (integer) 9 127.0.0.1:6379> get k2 "v2 append" 127.0.0.1:6379>

2.1.10、设置新值并返回旧值:getset

127.0.0.1:6379> getset k4 newv4

"v4" 127.0.0.1:6379> get k4 "newv4"

2.1.11、返回value对应字节数(字母->1字节,汉字->3字节)

127.0.0.1:6379> strlen name

(integer) 6 127.0.0.1:6379> strlen age (integer) 2 127.0.0.1:6379> get name "\xe5\xb0\x8f\xe6\x98\x8e"

2.1.12、判断key是否存在:exists

127.0.0.1:6379> exists v1

(integer) 0 127.0.0.1:6379> exists k1 (integer) 1 127.0.0.1:6379> exists k1 k2 (integer) 2 127.0.0.1:6379> exists k1 k2 k3 (integer) 3 2.1.13、获取key有效期:ttl(-1:永久生效,-2不存在key)

127.0.0.1:6379> set name zzj EX 100

OK 127.0.0.1:6379> ttl name (integer) 96

127.0.0.1:6379> ttl k1 (integer) -1

127.0.0.1:6379> ttl aaa (integer) -2

2.1.14、更改key有效期:expire

127.0.0.1:6379> set name zzj EX 100 NX

OK 127.0.0.1:6379> ttl name (integer) 92

127.0.0.1:6379> expire name 1000 (integer) 1 127.0.0.1:6379> ttl name (integer) 996

2.1.15、设置永不过期:persist

127.0.0.1:6379> ttl name

(integer) 996 127.0.0.1:6379> persist name (integer) 1 127.0.0.1:6379> ttl name (integer) -1

2.1.16、设置递增/递减(+1   -1):incr\decr

#注:如果不设置num值,默认为0

127.0.0.1:6379> INCR num (integer) 1 127.0.0.1:6379> get num "1"

127.0.0.1:6379> DECR num (integer) 0 127.0.0.1:6379> get num "0"

2.1.17、数值加减:incrby\decrby

127.0.0.1:6379> INCRBY num2 15

(integer) 15 127.0.0.1:6379> get num2 "15" 127.0.0.1:6379> DECRBY num2 10 (integer) 5 127.0.0.1:6379> get num2 "5"

2.2、列表( 双向可读写的管道,一个列表最多可以包含2^32-1 个元素 ) 2.2.1、lpush和rpush

# cba

127.0.0.1:6379> lpush llist a b c (integer) 3

# abc 127.0.0.1:6379> rpush rlist a b c (integer) 3

127.0.0.1:6379> type llist list

2.2.2、获取列表个数:llen

127.0.0.1:6379> LLEN llist

(integer) 3

2.2.3、获取指定位置数据:lindex

127.0.0.1:6379> rpush list a b c d

(integer) 4 127.0.0.1:6379> lindex list 0 "a" 127.0.0.1:6379> lindex list 3 "d" 127.0.0.1:6379> lindex list -1 "d"

2.2.4、获取指定范围数据:lrange

127.0.0.1:6379> rpush list a b c d

(integer) 4 127.0.0.1:6379> lrange list 1 2 1) "b" 2) "c" 127.0.0.1:6379> lrange list 0 -1 1) "a" 2) "b" 3) "c" 4) "d"

2.2.5、修改指定位置值lset

127.0.0.1:6379> lrange list 0 -1

1) "a" 2) "b" 3) "c" 4) "d" 127.0.0.1:6379> lset list 0 a1 OK 127.0.0.1:6379> lrange list 0 -1 1) "a1" 2) "b" 3) "c" 4) "d"

2.2.6、移除列表数据:lpop、rpop

127.0.0.1:6379> lrange list 0 -1

1) "a1" 2) "b" 3) "c" 4) "d" 127.0.0.1:6379> lpop list "a1" 127.0.0.1:6379> rpop list "d" 127.0.0.1:6379> lrange list 0 -1 1) "b" 2) "c"

2.2.7、截取列表:ltrim

127.0.0.1:6379> rpush list a b c d (integer) 4 127.0.0.1:6379> ltrim list 1 2 OK 127.0.0.1:6379> lrange list 0 -1 1) "b" 2) "c"

2.3、集合set(无序且唯一) 2.3.1、生成集合:sadd

127.0.0.1:6379> SADD set1 a

(integer) 1 127.0.0.1:6379> SADD set2 a b c (integer) 3 127.0.0.1:6379> type set1 set

2.3.2、追加数值:sadd(不能追加已存在的数值)

127.0.0.1:6379> SADD set1 b c d

(integer) 3 127.0.0.1:6379> SADD set1 b (integer) 0

2.3.3、查看集合内所有元素smembers

127.0.0.1:6379> smembers set1

1) "d" 2) "c" 3) "b" 4) "a"

2.3.4、删除集合中的元素:srem

127.0.0.1:6379> smembers set1

1) "d" 2) "c" 3) "b" 4) "a" 127.0.0.1:6379> srem set1 c (integer) 1 127.0.0.1:6379> smembers set1 1) "b" 2) "a" 3) "d"

2.3.5、集合交、并、差(sinter   sunion  sdiff)

127.0.0.1:6379> sadd set1 a b c d

(integer) 4 127.0.0.1:6379> sadd set2 a e c u (integer) 4 127.0.0.1:6379> sinter set1 set2 1) "c" 2) "a" 127.0.0.1:6379> sdiff set1 set2 1) "d" 2) "b" 127.0.0.1:6379> sdiff set2 set1 1) "u" 2) "e" 127.0.0.1:6379> sunion set1 set2 1) "c" 2) "e" 3) "d" 4) "u" 5) "b" 6) "a"

2.4、有序集合(有序且不重复, 每个元素是由 score 和 value 组成,score可以重复,value不可以重复 ) 2.4.1、生成有序集合zadd

127.0.0.1:6379> ZADD paihangbang 90 nezha 199 zhanlang 60 zhuluoji 30 gangtiexia

(integer) 4

2.4.2、打印有序集合zrange、zrevrange、withscores

# 从低到高,正序

127.0.0.1:6379> zrange paihangbang 0 -1 1) "gangtiexia" 2) "zhuluoji" 3) "nezha" 4) "zhanlang"

# 从高到低,倒序 127.0.0.1:6379> zrevrange paihangbang 0 -1 1) "zhanlang" 2) "nezha" 3) "zhuluoji" 4) "gangtiexia"

# score和value一起显示 127.0.0.1:6379> zrange paihangbang 0 -1 withscores 1) "gangtiexia" 2) "30" 3) "zhuluoji" 4) "60" 5) "nezha" 6) "90" 7) "zhanlang" 8) "199" 2.4.3、获取集合元素个数:zcard

127.0.0.1:6379> zcard paihangbang

(integer) 4

2.4.4、返回某个数值的索引zrank

127.0.0.1:6379> zrange paihangbang 0 -1

1) "gangtiexia" 2) "zhuluoji" 3) "nezha" 4) "zhanlang"

127.0.0.1:6379> zrank paihangbang nezha (integer) 2

2.4.5、获取指定数值的分数zscore

127.0.0.1:6379> zscore paihangbang nezha

"90"

2.4.6、删除元素:zrem

127.0.0.1:6379> zrange paihangbang 0 -1

1) "gangtiexia" 2) "zhuluoji" 3) "nezha" 4) "zhanlang"

127.0.0.1:6379> zrem paihangbang gangtiexia zhuluoji (integer) 2

127.0.0.1:6379> zrange paihangbang 0 -1 1) "nezha" 2) "zhanlang"

2.5、哈希( string 类型的字段 (field) 和值 (value) 的映射表 ) 2.5.1、生成hash key

# 格式:hset key field value

如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。

如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。

127.0.0.1:6379> hset info name zzj age 23 city nanjing sex man (integer) 4

127.0.0.1:6379> hset info name zhaozhijie age 23 city nanjing sex man (integer) 0

127.0.0.1:6379> hgetall info 1) "name" 2) "zhaozhijie" 3) "age" 4) "23" 5) "city" 6) "nanjing" 7) "sex" 8) "man"

2.5.2、查看所有字段的值:hgetall

127.0.0.1:6379> hgetall info

1) "name" 2) "zhaozhijie" 3) "age" 4) "23" 5) "city" 6) "nanjing" 7) "sex" 8) "man"

2.5.3、增加字段:hset

127.0.0.1:6379> hset info height 175

(integer) 1 127.0.0.1:6379> hgetall info 1) "name" 2) "zhaozhijie" 3) "age" 4) "23" 5) "city" 6) "nanjing" 7) "sex" 8) "man" 9) "height" 10) "175"

2.5.4、获取对应字段的值hget

127.0.0.1:6379> hget info name

"zhaozhijie" 127.0.0.1:6379> hget info age "23"

2.5.5、删除一个hash key对应的字段

127.0.0.1:6379> hdel info height

(integer) 1 127.0.0.1:6379> hgetall info 1) "name" 2) "zhaozhijie" 3) "age" 4) "23" 5) "city" 6) "nanjing" 7) "sex" 8) "man"

2.5.6、获取hash中所有的字段field

127.0.0.1:6379> hkeys info

1) "name" 2) "age" 3) "city" 4) "sex"

2.5.7、获取hash key对应的所有field的value

127.0.0.1:6379> hvals info

1) "zhaozhijie" 2) "23" 3) "nanjing" 4) "man"

2.5.8、删除hash

127.0.0.1:6379> del info

(integer) 1

相关文章