Redis入门之一简介
发布日期:2021-06-30 16:15:02 浏览次数:2 分类:技术文章

本文共 4813 字,大约阅读时间需要 16 分钟。

1. Redis 简介

  • Redis (REmote dictionary server)远程字典服务器,以字典结构存储数据。

目前支持的键值类型包括:

字符串,散列,列表,集合类型,有序集合

  • Redis 所有数据在内存中,读取速度快,但是程序退出后,内存数据会丢失,所以redis支持异步数据持久化。

  • Redis功能丰富,也可以用作缓存,队列系统

  • Redis和memcached很类似,都是基于key value的内存数据库

  • 使用简单,如果查询的sql如下

    select title from posts where id ='1' limit 1

    如果使用redis语句,如下:  HGET post:1 title

  •   几十种客户端编程语言支持,提供了丰富的库

2 入门命令测试

2.1 多数据库

redis默认提供16个数据库,0-15,测试如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
redis 127.0.0.1:6379> 
ping
PONG
redis 127.0.0.1:6379> KEYS *
1) 
"logn"
redis 127.0.0.1:6379> 
select  
111
(error) ERR invalid DB index
redis 127.0.0.1:6379[111]> 
select  
16
(error) ERR invalid DB index
redis 127.0.0.1:6379[16]> 
select  
15
OK
redis 127.0.0.1:6379[15]> KEYS *
(empty list or 
set
)
redis 127.0.0.1:6379[15]> 
select 
0
OK
redis 127.0.0.1:6379> keys *
1) 
"logn"
redis 127.0.0.1:6379>

  1. 通过select命令切换数据库

  2. 不支持数据库重命名

  3. 一个空的redis实例占用1M内存,轻量级

2.2 键值相关命令

SET 

GET

KEYS

DEL

TYPE

EXISTS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
redis 127.0.0.1:6379> SET logn=
'hello redis'
(error) ERR wrong number of arguments 
for 
'set' 
command
redis 127.0.0.1:6379> SET logn=
'helloredis'
(error) ERR wrong number of arguments 
for 
'set' 
command
redis 127.0.0.1:6379> SET logn  helloredis
OK
redis 127.0.0.1:6379> GET logn
"helloredis"
redis 127.0.0.1:6379> TYPE logn
string
redis 127.0.0.1:6379> EXIST logn
(error) ERR unknown 
command 
'EXIST'
redis 127.0.0.1:6379> EXISTS logn
(integer) 1
redis 127.0.0.1:6379> DEL logn
(integer) 1
redis 127.0.0.1:6379> DEL logn
(integer) 0
redis 127.0.0.1:6379> EXISTS logn
(integer) 0
redis 127.0.0.1:6379>

2.3 incr 和decr 

1
2
3
4
5
6
7
8
9
10
11
12
13
redis 127.0.0.1:6379> incr num
(integer) 1
redis 127.0.0.1:6379> incr num
(integer) 2
redis 127.0.0.1:6379> incr num
(integer) 3
redis 127.0.0.1:6379> incrby num 4
(integer) 7
redis 127.0.0.1:6379> decrby num 2
(integer) 5
redis 127.0.0.1:6379> decr num
(integer) 4
redis 127.0.0.1:6379>

2.4  批量设置,读取MSET,MGET

1
2
3
4
5
6
7
8
9
10
11
12
13
14
redis 127.0.0.1:6379> MSET a1 1 a2 2 a3 3
OK
redis 127.0.0.1:6379> MGET a1
1) 
"1"
redis 127.0.0.1:6379> KEYS *
1) 
"a2"
2) 
"a3"
3) 
"num"
4) 
"a1"
redis 127.0.0.1:6379> MGET a2
1) 
"2"
redis 127.0.0.1:6379> MGET a3
1) 
"3"
redis 127.0.0.1:6379>

2.5  散列类型

car:1----->name--->value

HSET,  HGET,

1
2
3
4
5
6
7
8
9
10
11
12
13
redis 127.0.0.1:6379> HSET car1  name AUDIO
(integer) 0
redis 127.0.0.1:6379> HSET car1 price  30w
(integer) 1
redis 127.0.0.1:6379> HSET car2  name  AUDIO
(integer) 0
redis 127.0.0.1:6379> HSET car2  price  20w
(integer) 1
redis 127.0.0.1:6379> HGET car2  name
"AUDIO"
redis 127.0.0.1:6379> HGET  car1  price
"30w"
redis 127.0.0.1:6379>

设置多个field ,利用HMSET

1
2
redis 127.0.0.1:6379> HMSET car3  name  buick   price  10w
OK

判断field是否存在 HEXISTS

redis 127.0.0.1:6379> HEXISTS  car3 name(integer) 1redis 127.0.0.1:6379> HEXISTS  car3 notexist(integer) 0

增加命令HINCRBY

删除命令HDEL

获取field或者value

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
redis 127.0.0.1:6379> HKEYS car1
1) 
"name"
2) 
"price"
redis 127.0.0.1:6379> HKEYS car2
1) 
"name"
2) 
"price"
redis 127.0.0.1:6379> HKEYS car3
1) 
"name"
2) 
"price"
redis 127.0.0.1:6379> HVALS  car1
1) 
"AUDIO"
2) 
"30w"
redis 127.0.0.1:6379> HVALS  car2
1) 
"AUDIO"
2) 
"20w"
redis 127.0.0.1:6379> HVALS  car3
1) 
"buick"
2) 
"10w"
redis 127.0.0.1:6379>

2.6  列表类型

1, 一个列表类型键和散列一样,最多2^32-1个元素

2.  利用双向链表实现,向两端添加元素时间复杂度是o(1),获取越接近两端的元素速度越快。这意味着一个几千万的元素的列表,或者头部或者尾部的十条记录也是很快的。(和只有20个元素的列表中获取头部或者尾部的10条记录速度是一样的)。两端插入时间复杂度同样为o(1)这种特性用于社交网络中的新鲜事,日志管理等,可以解决关系数据库无法应付的场景。

3.  缺点是通过索引访问比较慢,一个一个查找。


常用命令, LPUSH,LPOP,RPUSH,RPOP,LRANGE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
redis 127.0.0.1:6379> LPUSH numbers 3
(integer) 1
redis 127.0.0.1:6379> LPUSH numbers 2 1
(error) ERR wrong number of arguments 
for 
'lpush' 
command
redis 127.0.0.1:6379> LPUSH numbers 2
(integer) 2
redis 127.0.0.1:6379> RPUSH  numbers  5
(integer) 3
redis 127.0.0.1:6379> LPOP numbers
"2"
redis 127.0.0.1:6379> RPOO number
(error) ERR unknown 
command 
'RPOO'
redis 127.0.0.1:6379> RPOO numbers
(error) ERR unknown 
command 
'RPOO'
redis 127.0.0.1:6379> RPOP numbers
"5"
redis 127.0.0.1:6379> LRANGE  0  2
(error) ERR wrong number of arguments 
for 
'lrange' 
command
redis 127.0.0.1:6379> LRANGE numbers 0  2
1) 
"3"
redis 127.0.0.1:6379>

2.7  集合类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
redis 127.0.0.1:6379> SADD letters  a b c
(integer) 3
redis 127.0.0.1:6379> SMEMBERS letters
1) 
"c"
2) 
"a"
3) 
"b"
redis 127.0.0.1:6379> SREM a
(error) ERR wrong number of arguments 
for 
'srem' 
comman
redis 127.0.0.1:6379> SREM letters a
(integer) 1
redis 127.0.0.1:6379> SADD letters2  c d e
(integer) 3
redis 127.0.0.1:6379> SDIFF  letters  letters2
1) 
"b"
redis 127.0.0.1:6379> SDIFF  letters2  letters
1) 
"d"
2) 
"e"
redis 127.0.0.1:6379> SMEMBERS letters
1) 
"c"
2) 
"b"
redis 127.0.0.1:6379> SMEMBERS letters2
1) 
"c"
2) 
"d"
3) 
"e"
redis 127.0.0.1:6379>

SADD 

SMEMBERS 

 SREM 删除

SDIFF 

转载地址:https://kerry.blog.csdn.net/article/details/42361717 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux命令eval的用法
下一篇:Redis进阶 ----事务

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月13日 20时41分29秒