redis基础命令

一、redis特点:

1.以key,value键值对保存
2.持久化
3.服务器关机了还能保存
4.支持几种数据类型
5.单线程
6.一共有16个数据库(索引为0-15,db0-db15)
7.默认端口:6379

二、String和key常用命令

1.切换redis中的数据库:

切换到1数据库:select 0
切换到16数据库:select 15

2.查询数据库中key的数量

DBSIZE

3.查询数据库中的所有key

keys *

4.查询key以什么开头的所有key

查询所有以k开头的所有key:keys k?

5.清除当前库中的所有key

FLUSHDB

6.清除所有库中的所有key

FLUSHALL

7.判断某个key是否存在,存在返回1,不存在返回0

exists key的名字  存在返回1,不存在返回0

8.将某个key移到某个库

例如:将k1移到2号库
move k1 1

9.给指定的key设置过期时间:前提是该key已经添加到redis中了:说明:一旦key过期,redis便自动将其从内存中移除出去

expire key名称 秒钟    不设置表示永不过期
eg:expire k1 10表示给k1设置10秒过期时间

10.查询指定key还有多少秒过期

ttl key名称     返回-1表示永不过期,-2表示已过期

11.删除key

DEL key名称  eg:DEL k1

12.向库中添加数据:如果该key已经存在,则会覆盖原来的内容

set k1 v1之后  再执行set k1 v2  这时再用get k1取出来的数据就为v2

13.向数据库中添加数据的时候加上过期时间

setex key名称 有效时间秒数 值
eg:setex k5 10 v5    意思就是将k5加入到数据库中有效期为10秒,值为v5

14.向数据库中添加数据,如果key已经存在则不添加并且返回0,如果key不存在则key添加返回1

setnx key名称

15.批量向redis中添加key,value

mset k1 v1 k2 v2 k3 v3  :会覆盖
msetnx k1 v1 k5 v5    :如果这里面有一个key存在则其他的也不会添加

16.批量根据key获得value

mget k1 k2 k3

17.查看key的数据类型

type key名称

redis命令大全:http://www.redis.cn/commands.html

三、List常用命令:

1.添加数据

LPUSH list01 1 2 3 4 5  从左边添加数据
RPUSH list02 1 2 3 4 5  从右边添加数据

2.获取数据:这个只是获取数据并不会移除掉当前数据

lrange key名称 0 -1    表示取出这个key的全部数据,从左边取

3.取出一个数据:每次只会取出一个数据,这个不仅会获取数据并且还会将该数据从集合中移除掉

lpop list名称  :lpop list01 取出list01中的第一个数据
rpop list名称  :rpop list01 取出list01中的最后一个数据

4.按照索引下表获得元素(从上到下),只是获取并不会删除:索引从0开始

lindex list名称 索引编号    
lindex list 01 1

5.删除N个value

lrem list名称 N value    表示从list集合中删除N个value  

 6.从源列表左边取出数据放到目标列表右边添加

rpoplpush 源列表 目标列表

7.将某个索引的key换成另一个

lset key index value
eg:lset list01 1 x将list01集合的第二个值换成1

8.在某个值前面加个值

linsert key before/after 已保存值  将要保存的值
linsett list01 before x java 在list01中x值的前面加个索引值为java

9.说明:如果这个list集合中的所有值都为空了,则这个list的key也就消失了

 四、Set常用命令:(无序无重复)

1.加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.

如果key 的类型不是集合则返回错误.

SADD
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SADD myset "World"
(integer) 0
redis> SMEMBERS myset
1) "World"
2) "Hello"
redis> 

2.返回key集合所有的元素.该命令的作用与使用一个参数的SINTER 命令作用相同.

SMEMBERS
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SMEMBERS myset
1) "World"
2) "Hello"
redis> 

3.返回集合存储的key的基数 (集合元素的数量).

SCARD
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SCARD myset
(integer) 2
redis> 

4.仅提供key参数,那么随机返回key集合中的一个元素

SRANDMEMBER
redis> SADD myset one two three
(integer) 3
redis> SRANDMEMBER myset
"one"
redis> SRANDMEMBER myset 2
1) "three"
2) "one"
redis> SRANDMEMBER myset -5
1) "one"
2) "one"
3) "one"
4) "one"
5) "one"
redis> 

5.移动集合里面的一个元素到另一个集合

SMOVE
redis> SADD myset "one"
(integer) 1
redis> SADD myset "two"
(integer) 1
redis> SADD myotherset "three"
(integer) 1
redis> SMOVE myset myotherset "two"
(integer) 1
redis> SMEMBERS myset
1) "one"
redis> SMEMBERS myotherset
1) "three"
2) "two"
redis> 

6.返回一个集合与给定集合的差集的元素.(在第一个集合里面不在第二个集合里面)

SDIFF
假如:
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}

举例:
redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SDIFF key1 key2
1) "a"
2) "b"
redis> 

7.获取两个集合的交集

SINTER 
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}


redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SINTER key1 key2
1) "c"
redis> 

8.获取两个集合的并集

SUNION 
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}

redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SUNION key1 key2
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
redis> 

五、哈希常用命令:K,V模式不变,但V是一个键值对

1.设置 key 指定的哈希集中指定字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段在哈希集中存在,它将被重写。

HSET 
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HGET myhash field1
"Hello"
redis> 

2.返回 key 指定的哈希集中该字段所关联的值

HGET 
redis> HSET myhash field1 "foo"
(integer) 1
redis> HGET myhash field1
"foo"
redis> HGET myhash field2
(nil)
redis> 

3.设置 key 指定的哈希集中指定字段的值。该命令将重写所有在哈希集中存在的字段。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联

HMSET 
redis> HMSET myhash field1 "Hello" field2 "World"
OK
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
redis> 

4.返回 key 指定的哈希集中指定字段的值。对于哈希集中不存在的每个字段,返回 nil 值。因为不存在的keys被认为是一个空的哈希集,对一个不存在的 key 执行 HMGET 将返回一个只含有 nil 值的列表

HMGET 
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HMGET myhash field1 field2 nofield
1) "Hello"
2) "World"
3) (nil)
redis> 

5.返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍

HGETALL 
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"
redis> 

6.从 key 指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。如果 key 指定的哈希集不存在,它将被认为是一个空的哈希集,该命令将返回0。

HDEL 
redis> HSET myhash field1 "foo"
(integer) 1
redis> HDEL myhash field1
(integer) 1
redis> HDEL myhash field2
(integer) 0
redis> 

7.返回 key 指定的哈希集中所有字段的名字

HKEYS 
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HKEYS myhash
1) "field1"
2) "field2"
redis> 

8.返回 key 指定的哈希集中所有字段的值。

HVALS 
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HVALS myhash
1) "Hello"
2) "World"
redis> 

9.只在 key 指定的哈希集中不存在指定的字段时,设置字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段已存在,该操作无效果。

HSETNX 
redis> HSETNX myhash field "Hello"
(integer) 1
redis> HSETNX myhash field "World"
(integer) 0
redis> HGET myhash field
"Hello"
redis> 

六、ZSet常用命令:有序集合(在set的基础上加了score值,之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2)

1.添加

ZADD 
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 1 "uno"
(integer) 1
redis> ZADD myzset 2 "two" 3 "three"
(integer) 2
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
redis> 

2.获取值 ZRANGE key start stop [WITHSCORES]

ZADD myzset 1 "one"
ZADD myzset 2 "two"
ZADD myzset 3 "three"
ZRANGE myzset 0 -1
ZRANGE myzset 2 3
ZRANGE myzset -2 -1

六、reids的五大数据类型

1.String(字符串):一个key对应一个value
2.Hash(类似java里的map)
3.List(列表)
4.Set(集合):无序无重复
5.Zset(sorted set 有序集合)

  

 

posted @ 2020-03-22 15:59  王兴龙123  阅读(220)  评论(0编辑  收藏  举报