一、什么是Redis
Redis
(全称:Remote Dictionary Server 即远程字典服务),是一个nosql
(即非关系型数据库)。其将数据保存在内存中,同时支持将内存数据持久化到硬盘,且同时支持多种数据结构(string
、list
、set
、sorted set
、hash
),相关参考文档:Redis中文文档。redis的常见使用场景:
- 登录会话存储
- 作为消息队列
- 一些常用数据的缓存
- 发布和订阅功能
二、Linux下的安装
Redis只能安装运行在linux操作系统下,以下介绍在ubuntu
系统下的使用。
-
安装:
sudo apt-get install redis-server
-
卸载:
sudo apt-get purge --auto-remove redis-server
-
启动:redis 安装后,默认会自动启动,可以通过以下命令查看:
ps aux|grep redis
若想手动改启动,可以使用:
sudo service redis-server start
-
使用
redis-cli
连接redis-servser
:redis-cli -h [ip] -p [port]
-
停止:
sudo service redis-server stop
三、常见操作
操作 redis 数据库的方式有两种,一种是采用redis-cli
工具,另一种是通过编程语言,比如Python
、PHP
和Java
等。
使用redis-cli
对 redis 进行操作:
1.基本操作(字符串操作)
-
添加(会覆盖旧值):
set key value # 如: set username wjiaman
Redis会自动将value作为字符串存储,若要存储的字符串中含有空格,则需将要存储的内容用
""
括起来:set msg "hello world!"
-
查找:
get username
-
删除:
del key # 如: del username
-
设置过期时间:
expire key timeout(单位为秒)
也可以在设置值的时候,一同指定过期时间:
set key value EX timeout # 或 setex key timeout value
-
查看过期时间:
ttl key # 如: ttl username
-
查看当前所有的
key
:keys *
2.列表操作
-
列表左边(表头)添加元素:
lpush list value
-
列表右边(表尾)添加元素:
rpush list value
对于添加元素操作:若
list
不存在,则会创建一个列表;若`list``存在且不为列表,则返回一个错误。 -
查看元素:
①多个元素:lrange list start stop
返回列表中指定区间的元素;若要返回所有元素,使用
lrange list 0 -1
。②单个元素:
lindex list index
返回表中索引为
index
的元素。 -
移除元素:
# 移除并返回表头元素: lpop list # 移除并返回表尾元素: rpop list # 移除并返回表中多个元素: lrem list count value
对于
lrem key count value
:移除表中count
个值为value
的值,count
的取值可以为:count>0
:从表头向表尾搜索;count=0
:移除表中所有与value
相等的值;count<0
:从表尾向表头搜索。
-
获取列表长度:
llen list
3.集合操作
-
添加元素:
sadd set value1,value2,... # 如: sadd team wjiaman1,wjiaman2
-
查看元素:
smembers set # 如: smembers team
-
移除元素:
srem set value1,value2,... # 如: srem team wjiaman1,wjiaman2,...
-
查看集合大小:
scard set # 如: scard team
-
获取多个集合交集:
sinter set1 set2 # 如: sinter team1 team2
-
获取多个集合并集:
sunion set1 set2 # 如: sunion team1 team2
-
获取多个集合差集:
sdiff set1 set2 # 如: sdiff team1 team2
4.哈希操作
-
添加新值:
hset tabel key value # 如: hset website baidu baidu.com
将哈希表
key
中键key
的值设为value
。
若表table
不存在,会创建新的哈希表。 -
获取表中键对应的值:
hget table key # 如: hget website baidu
-
删除某个键值对:
hdel table key # 如: hdel website baidu
-
获取表中所有的键值对:
hgetall table # 如: hget website
-
获取表中所有的键:
hkeys table # 如: hkeys website
-
获取表中所有的值:
hvals table # 如: hvals website
-
判断表中是否存在某个键:
hexists table key # 如: hexists website baidu
-
计算表中所有键值对:
hlen table # 如: hlen website
5.事务操作
事务操作即多个命令的集合,使用事务可以一次性执行多个命令。
-
开启一个事务:
multi
-
执行事务:
exec
将
multi
与exec
命令间的命令一并提交。 -
取消事务:
discard
取消
multi
后的所有命令。 -
监视一个或多个
key
(数据):watch key...
若在事务执行之前这个(些)
key
被其他命令所改动,则事务将被打断。 -
取消所有
key
的监视unwatch
6.发布/订阅操作
-
给某个频道发消息:
publish channel message
-
订阅某个频道的消息:
subscribe channer