本文共 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> |
-
通过select命令切换数据库
-
不支持数据库重命名
-
一个空的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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!