Redis常用命令

jasmine 于 2019-04-10 发布

key操作命令

切换DB

> select 2
OK

获取所有key

> keys *
1) "ll"
2) "tt"
> keys *t
1) "tt"

获取键总数

> dbsize
(integer) 6

查询键是否存在

> exists java php
(integer) 2

删除键

> del php
(integer) 1

查询键类型

> type java
string

移动键(当目标数据库有被移动的key,则移动失败,返回0)

> move java 2
(integer) 0

查询key的生命周期(秒语法:ttl key 毫秒语法:pttl key)

> ttl java
(integer) -1  ///-1:永远不过期。
> ttl java
(integer) 996

设置过期时间(秒语法:expire key seconds 毫秒语法:pexpire key milliseconds)

> expire java 1000
(integer) 1

设置永不过期

> persist java
(integer) 1
> ttl java
(integer) -1

更改键名称

> rename java myjava
OK
> get java
(nil)
> get myjava
"2"

字符串操作命令(string)

字符串是Redis中最基本的数据类型,单个数据能存储的最大空间是512M。

存放键值

> set js 3
OK
> get js
"3"

> set java 3 EX 100  //将java值设置为3时间设置为100s
OK
> get java
"3"
> ttl java
(integer) 81

> setnx java 4 //设置键java值4,如果不存在返回1,存在返回0
(integer) 1
> setnx java 5
(integer) 0

> setex java 10 hello //将java值设置为hello时间设置为10s
OK
> get java
"hello"
> ttl java
(integer) 2

值递增/递减

> set java 9
OK
> incr java
(integer) 10
> get java
"10"
> decr java
(integer) 9
> get java
"9"

> set java hello
OK
> incr java
(error) ERR value is not an integer or out of range

批量存放键值

> mset java 1 php 2 js 3
OK

批量获取键值

> mget java php js
1) "1"
2) "2"
3) "3"

获取值长度

> set java hello
OK
> strlen java
(integer) 5

追加内容

> set java hello
OK
> append java word
(integer) 9
> get java
"helloword"

获取部分字符

> get java
"helloword"
> getrange java 0 4
"hello"

无序集合操作命令(set)

集合存储值

> sadd javalist 1 2 3 4 5
(integer) 5

获取元素

> smembers javalist
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

随机获取语法

>  srandmember javalist 3   //随机获取3个值
1) "5"
2) "2"
3) "4"

判断集合是否存在元素

> sismember javalist 2
 (integer) 1
 > sismember javalist 6
 (integer) 0

获取集合元素个数

> scard javalist
(integer) 5

删除集合元素

> srem javalist 2
(integer) 1
> smembers javalist
1) "1"
2) "3"
3) "4"
4) "5"

弹出元素(随机取出,集合为弹出后剩余元素)

> sadd javalist 1 2 3 4 5
(integer) 5
> spop javalist 2
1) "1"
2) "3"
> smembers javalist
1) "2"
2) "4"
3) "5"

有序集合(分数map)

有序集合存储值

> ZADD price 8.5 apple 5.0 banana 6.0 cherry
(integer) 3

获取元素分数

> zscore price apple
8.5

获取排名范围排名

> zrange price 0 -1
1) "banana"
2) "cherry"
3) "apple"
> zrange price 0 -1 withscores
1) "banana"
2) 5.0
3) "cherry"
4) 6.0
5) "apple"
6) 8.5

获取指定分数范围排名

> zrangebyscore price 6 10
1) "cherry"
2) "apple"
> zrangebyscore price 6 10 withscores
1) "cherry"
2) 6.0
3) "apple"
4) 8.5
> zrangebyscore price 6 10 withscores limit 0 1
1) "cherry"
2) 6.0

增加指定元素分数

> zincrby price 10 apple
18.5

获取集合元素个数

> zcard price
3

获取指定范围分数个数

> zcount price 6 10
1

删除指定元素

> zrem price jave
1

获取元素排名

> zrank price apple  /// 数字越大分数越高
2

列表操作命令(双向链表)支持重复元素

左端存值

> lpush sq haha gaga xixi
(integer) 3

右端存值

> rpush sq you
(integer) 4

索引存值

> lset sq 2 charu  ///覆盖2位置的值
OK

左端弹出元素

> lpop sq  //弹出后数组数量 -1
"xixi"

右端弹出元素

> rpop sq
"you"

获取元素个数

> llen sq
(integer) 2

获取列表元素

> lpush users tom kitty land pony jack maddy
(integer) 6

> lrange users 0 3
1) "maddy"
2) "jack"
3) "pony"
4) "land"

// 获取所有
> lrange users 0 -1
1) "maddy"
2) "jack"
3) "pony"
4) "land"
5) "kitty"
6) "tom"

// 从右端索引
> lrange users -3 -1
1) "land"
2) "kitty"
3) "tom"

索引获取元素

> lindex users 2
"pony"

删除元素

> lrange users 0 -1
1) "maddy"
2) "jack"
3) "pony"
4) "land"
5) "kitty"
6) "tom"
7) "maddy"
8) "jack"
9) "pony"
10) "land"
11) "kitty"
12) "tom"
> lrem users 0 tom  //将tom删除剩0个
(integer) 2
> lrem users 1 jack  //将jack删除剩1个
(integer) 1
> lrange users 0 -1
1) "maddy"
2) "pony"
3) "land"
4) "kitty"
5) "maddy"
6) "jack"
7) "pony"
8) "land"
9) "kitty"

范围删除

> lrange users 0 -1
1) "maddy"
2) "pony"
3) "land"
4) "kitty"
5) "maddy"
6) "jack"
7) "pony"
8) "land"
9) "kitty"
> ltrim users 2 4
OK
> lrange users 0 -1
1) "land"
2) "kitty"
3) "maddy"

散列操作命令(hashmap)

存放键值

> hset user name haha  //单个
1
> hset user name haha age 18 addr beijing  //多个
2
> hsetnx user tall 180  //存如果没有返回1
(integer) 1
> hsetnx user tall 180  //存如果有返回0
(integer) 0

获取字段值

> hget user name  //单个
"haha"
> hmget user name age address  //多个
1) "haha"
2) "18"
3) (nil)

> hgetall user  //获取所有 k-v
1) "name"
2) "haha"
3) "age"
4) "18"
5) "addr"
6) "beijing"
7) "tall"
8) "180"

> hkeys user //获取所有key
1) "name"
2) "addr"
3) "tall"

> hvals user
1) "haha"
2) "beijing"
3) "170"

判断字段是否存在

> hexists user address
(integer) 0
> hexists user name
(integer) 1

获取字段数量

> hlen user
4

递增/减

> hincrby user tall -10
(integer) 170

删除字段

> hdel user age
(integer) 1