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
2
3
4
tar xzf redis-4.0.11.tar.gz
cd redis-4.0.11
make
make install

创建配置和持久化目录

1
2
mkdir /etc/redis
mkdir -p /var/redis/6379

配置

  1. 使用Redis的配置模板,将redis-4.0.11目录下的配置模板拷贝到/etc/redis下,配置文件名以要使用的端口号命名
    1
    cp redis.conf /etc/redis/6379.conf
  2. 开启守护线程,使Redis开启后可以在后台运行,不同另开窗口使用
    1
    vim /etc/redis/6379.conf
    daemonize no修改为 daemonize yes
  3. 设置持久化文件存储位置,6379为该配置使用的端口
    配置dirdir /var/redis/6379

将Redis配置为系统服务

  1. redis-4.0.11/utils目录下有个redis_init_script文件,将该文件拷贝到/etc/init.d文件夹下
    1
    2
    cd utils
    cp redis_init_script /etc/init.d/redis_6379
  2. 重新加载配置文件
    1
    systemctl daemon-reload
  3. 启用Redis
    1
    systemctl start redis_6379
  4. 停止服务
    1
    systemctl stop redis_6379
  5. 重启服务
    1
    systemctl restart redis_6379
  6. 其他命令
    设置密码后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
2
3
4
5
app.redis = redis.Redis(
host=constants.REDIS_HOST,
port=constants.REDIS_PORT,
db=constants.REDIS_DB,
password=constants.REDIS_PASSWORD)

添加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
2
3
4
127.0.0.1:6379> set xiaoyu sb
OK
127.0.0.1:6379> get xiaoyu
"sb"

xiaoyu 就是键,sb 就是值
一个键最大能存储512MB

Hash

Redis hash是一个键值(key==>value)对集合
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象

1
2
3
4
5
6
127.0.0.1:6379> hmset smilehash xiaoyu sb xiaojie beautiful
OK
127.0.0.1:6379> hget smilehash xiaoyu
"sb"
127.0.0.1:6379> hget smilehash xiaojie
"beautiful"

smilehash为hash对集合的名称,xiaoyuxiaojie为键,“sb”、“beautiful”为对应的值
每个hash可以存储2的32次方减1个键值对(40多亿)

List

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0.0.1:6379> lpush smile origin
(integer) 1
127.0.0.1:6379> lpush smile xiaoyang
(integer) 2
127.0.0.1:6379> lpush smile dayang
(integer) 3
127.0.0.1:6379> lrange smile 0 2
1) "dayang"
2) "xiaoyang"
3) "origin"
127.0.0.1:6379> lrange smile 0 10
1) "dayang"
2) "xiaoyang"
3) "origin"

列表最多可存储2的32次方减1个元素(每个列表可存储40多亿)

Set(集合)

Redis的Set是string类型的无序集合,集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)
添加一个string元素到key对应的set集合中,成功返回2,如果元素已经存在返回0,不存在则返回错误

1
2
3
4
5
6
7
8
127.0.0.1:6379> sadd testset 1
(integer) 1
127.0.0.1:6379> smembers testset
1) "1"
127.0.0.1:6379> sadd testset 1
(integer) 0
127.0.0.1:6379> smembers testset
1) "1"

testset添加命令执行了两次,但是第一次返回1表示操作成功添加了testset,第二次返回0元素已存在不在重复添加
集合最多可存储2的32次方减1个成员(每个集合可存储40多亿个成员)

zset(sorted set:有序集合)

Redis zset和set一样也是string类型元素的集合,且不允许重复成员,不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但是分数(score)却可以重复

1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> zadd test_zset 1 a
(integer) 1
127.0.0.1:6379> zadd test_zset 1.1 b
(integer) 1
127.0.0.1:6379> zadd test_zset 1.1 b
(integer) 0
127.0.0.1:6379> zadd test_zset 1.2 g
(integer) 1
127.0.0.1:6379> zrangebyscore test_zset 0 10
1) "a"
2) "b"
3) "g"

各个数据类型应用场景

类型 简介 特性 场景
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
2
firewall-cmd --zone=public --add-port=6379/tcp --permanent 
firewall-cmd --reload

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×