Redis
Redis operation.
安装(Windows)
下载地址:https://github.com/MSOpenTech/redis/releases
解压后将文件夹路径配置到PATH
环境变量,就可以在CMD窗口直接使用命令了
安装(Debian)
下载
1 | wget http://download.redis.io/releases/redis-4.0.11.tar.gz |
解压、安装
1 | tar xzf redis-4.0.11.tar.gz |
创建配置和持久化目录
1 | mkdir /etc/redis |
配置
- 使用Redis的配置模板,将
redis-4.0.11
目录下的配置模板拷贝到/etc/redis
下,配置文件名以要使用的端口号命名1
cp redis.conf /etc/redis/6379.conf
- 开启守护线程,使Redis开启后可以在后台运行,不同另开窗口使用 将
1
vim /etc/redis/6379.conf
daemonize no
修改为daemonize yes
- 设置持久化文件存储位置,6379为该配置使用的端口
配置dir
为dir /var/redis/6379
将Redis配置为系统服务
- 在
redis-4.0.11/utils
目录下有个redis_init_script
文件,将该文件拷贝到/etc/init.d
文件夹下1
2cd utils
cp redis_init_script /etc/init.d/redis_6379 - 重新加载配置文件
1
systemctl daemon-reload
- 启用Redis
1
systemctl start redis_6379
- 停止服务
1
systemctl stop redis_6379
- 重启服务
1
systemctl restart redis_6379
- 其他命令
设置密码后Redis无法正常关闭时的关闭方法1
redis-cli -p 6379 -a password shutdown
中文教程
http://www.redis.net.cn/tutorial/3501.html
命令(CMD下)
- 启动
redis-server
- 使用配置文件启动
redis-server redis.conf
redis.conf为要使用的配置文件 - 启动Redis客户端
redis-cli
- 远程启动Redis客户端
redis-cli -h host -p port -a password
如:redis-cli -h 127.0.0.1 -p 6379 -a 12345678
命令(Redis客户端下)
auth password
进入redis-cli
后,使用此命令进行密码校验(如果有密码的话)- 设置连接密码
config set requirepass 12345678
- 获取连接密码
config get requirepass
- 获取数据库中key的数量
dbsize
- 添加key,value
set key value
- 获取value
get key
- 删除key
del key
- 获取全部key
keys *
- 查看key的类型
type key
- 随机取出一个key
randomkey
- 清空Redis
flushdb
- 查看该元素是否存在
exists key
Python下使用Redis
连接
1 | app.redis = redis.Redis( |
添加key,value
1 | app.redis.set('smileorigin', 'testvalue') |
获取value
1 | app.redis.get('smileorigin') |
数据类型
String
string是Redis最基本的类型,你可以理解成与一个key对应一个value
string类型是二进制安全的,意思是Redis的string可以包含任何数据,比如jpg图片或者序列化的对象
string类型是Redis最基本的数据类型,一个键最大能存储512MB
1 | 127.0.0.1:6379> set xiaoyu sb |
xiaoyu 就是键,sb 就是值
一个键最大能存储512MB
Hash
Redis hash是一个键值(key==>value)对集合
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
1 | 127.0.0.1:6379> hmset smilehash xiaoyu sb xiaojie beautiful |
smilehash为hash对集合的名称,xiaoyu、xiaojie为键,“sb”、“beautiful”为对应的值
每个hash可以存储2的32次方减1个键值对(40多亿)
List
Redis列表是简单的字符串的列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
1 | 127.0.0.1:6379> lpush smile origin |
列表最多可存储2的32次方减1个元素(每个列表可存储40多亿)
Set(集合)
Redis的Set是string类型的无序集合,集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)
添加一个string元素到key对应的set集合中,成功返回2,如果元素已经存在返回0,不存在则返回错误
1 | 127.0.0.1:6379> sadd testset 1 |
testset添加命令执行了两次,但是第一次返回1表示操作成功添加了testset,第二次返回0元素已存在不在重复添加
集合最多可存储2的32次方减1个成员(每个集合可存储40多亿个成员)
zset(sorted set:有序集合)
Redis zset和set一样也是string类型元素的集合,且不允许重复成员,不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但是分数(score)却可以重复
1 | 127.0.0.1:6379> zadd test_zset 1 a |
各个数据类型应用场景
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
String(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | |
Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值 | 存储、读取、修改用户属性 |
list(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1.最新消息排行等功能(比如朋友圈的时间线) 2.消息队列 |
Set(集合) | 哈希表实现,元素不重复 | 1.添加、删除、查找的复杂度都是O(1) 2.为集合提供了求交集、并集、差集等操作 | 1.共同好友 2.利用唯一性统计访问网站的所有独立ip 3.好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Sorted Set(有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1.排行榜 2.带权重的消息队列L |
Redis在Center os服务器中无法被外部访问
出现此情况可能是服务器的防火墙开启了,且未设置Redis的端口为白名单,所以外部访问被拒绝,且4.0版本后的Redis要记得在配置文件中设置密码,否则为了安全默认是禁止外部连接的
使用以下命令将Redis使用的6379端口设置为列外
1 | firewall-cmd --zone=public --add-port=6379/tcp --permanent |
- 本文标题:Redis
- 本文作者:Thomas Woo
- 发布时间:2018-03-11 02:59
- 最后更新:2020-06-20 15:40
- 本文链接:http://smileorigin.site/database/redis/redis/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!