Redis数据库的使用

2018-11-06  本文已影响0人  JJaden

Redis是一个高性能的key-value数据库,并且有以下三个特点:

Ubuntu安装Redis:

$sudo apt-get update
$sudo apt-get install redis-server
$ redis-server

查看是否启动: $ redis-cli

使用Redis客户端:
$ redis-cli
如果在远程服务上启动Redis客户端:
$ redis-cli -h host -p port -a password
有时候会有中文乱码,只需要redis-cli后面加上--raw

Redis的数据类型

Redis支持五种数据类型:string,hash,list,set(集合),zset(有序集合)

string:

可以包含任何数据,比如图片或者序列化的对象,这个类型最大能储存512MB

redis 127.0.0.1:6379> SET name "runoob"
OK
redis 127.0.0.1:6379> GET name
"runoob"

使用setget命令,例子中的name为变量名
可以使用DEL命令删除键

Hash:

这是一个键值对集合,特别适合用于存储对象

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

使用HMSET设置键值对,使用HGET获取对应的值

List:

Redis列表是简单的字符串列表,按照插入的顺序排序,可以添加一个元素到列表的头部(左边)或者尾部(右边):

redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

例子中runoob为list的名字,可以存储40多亿数据

Set:

这是String类型的无序集合,集合是通过哈希表实现的,所以增加,删除,查找的复杂度都是O(1):

redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq  #这里添加第二次,但是集合内元素具有唯一性,所以第二次的插入将被忽略
(integer) 0
redis 127.0.0.1:6379> smembers runoob

1) "redis"
2) "rabitmq"
3) "mongodb"

sadd key member
这里使用sadd命令将string类型元素添加到key对应的set集合中,成功返回1,元素已存在返回0,set不存在返回错误

zset:

与set不同的是每个元素都会关联一个double类型的分数,然后通过分数为集合中的成员进行从小到大的排序,成员元素不可重复,但是分数可以重复

redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabitmq"
3) "redis"

zadd key score member
使用zadd命令,将元素添加到集合中,并且更新对应的分数score。

Redis事务:

Redis事务可以一次性执行多个命令,批量操作在发送EXEC命令前放入队列缓存,收到EXEC这个命令后进入事务执行,任意命令执行失败其余的命令依然被执行,在事务执行的过程中其他客户端提交的命令不会插入到事务执行命令的序列中。
例子如下:

redis 127.0.0.1:6379> MULTI
OK

redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED

redis 127.0.0.1:6379> GET book-name
QUEUED

redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED

redis 127.0.0.1:6379> SMEMBERS tag
QUEUED

redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
   2) "C++"
   3) "Programming"

MULTI命令表明开始一个事务,然后添加各种命令,最后由EXEC命令执行事务中的所有命令
还可以使用DISCARD命令放弃执行事务块中的所有命令

上一篇下一篇

猜你喜欢

热点阅读