redis

redis(默认端口6379)

它是一种非关系型数据库,他的数据保存在内存当中,所以存储非常快,但也可以刷到硬盘上。

redis的使用场景(时时在变化,但数据还不是那么重要)

一、登陆会话存储:cookie和session

二、排行版/计数器:比如一些秀场类的项目。

三、作为消息队列:celery就是使用redis作为中间人

四、一些常用的数据缓存

五、好友关系

六、发布和订阅功能

redis和memcached比较

redis的安装与使用

首先编译安装redis

wget http://download.redis.io/releases/redis-5.0.0.tar.gz

tar -zxvf redis-5.0.0.tar.gz

yum install gcc

yum install gcc-c++

make

cp src目录下的redis-server /usr/bin/ 服务端启动文件

cp src目录下的redis-cli /usr/bin/ 客户端启动文件

而后启动redis-server

redis-server &

安装好后执行如下命令就可以进入到redis:

redis-cli –p 6379 –h 127.0.0.1

redis的启动: redis-server

redis的进入: redis-cli –p 6379 –h ip

redis的停止:进入数据库后输入 shutdown

redis的配置文件修改后如何加载?

redis-server redis.cnf的绝对路径 &

编译安装出现的问题

报这个错误的意思是说链接redis 时只能通过本地localhost (127.0.0.1)这个来链接,而不能用网络ip(192.168..)这个链接,解决方法如下:

一、停掉redis,使用ps查看有关redis所有的进程,全部杀死

二、打开redis配置文件,注释掉bind 127.0.0.1

 daemonize yes 这是redis的默认守护进程,打开它,把yes修改为no

protected-mode no 这是redis的保护模式,把yes修改为no

设置密码 requirepass redis123

三、以加载配置文件的方式启动让修改的配置生效

四、进入后输入密码 auth 密码  即可排除此错误。

如果使用make不能安装,报错,使用如下命令:make MALLOC=libc

字符串

添加:

setkey value

查询:

get key

删除:

delkey

过期时间的设置:没过期之间是可以get到的,时间一过,就get不到了

set key value ex time

查看所有的key

keys  *

redis是默认有16个数据库,范围是(0-15)

redis的切换

select 数据库名

列表

添加:

lpush key value从左往右

rpush key value 从右往左

查看:

lrange key 0   -1  这是查看全部(下标是从0开始排列)

移除列表的第一个元素并返回移除的元素:

lpop key

移除尾元素:

rpop key

指定返回几个元素:

lindex key 1

查看当前列表几个元素:

llen key

删除指定元素:

lrem key 要删除的个数 value

集合(添加重复值无效)

添加:

sadd key value

查看:

smembers key

移除:

srem key value

查看集合中元素个数:

scard key

查看两个集合的交集:

 sinter 集合1 集合2

查看两个集合的并集:

sunion 集合1 集合2

查看两个集合的差集:这个是后头的集合差前头的

sdiff 集合1 集合2

hash 哈希操作(相当于python中字典套字典)

添加:

hset   key  file  value

获取:

hget  key   file

查看所有的value:

hgetall  key

获取所有的field:

hkeys key

查看所有的值:

hvals key

判断是否存在某个field:

hexists key field

查看长度:

hlen key

事物操作

隔离操作:事务中的所有命令都会序列化、按顺序地执行,不会被其他命令打扰。

原子操作:事务中的命令要么全部被执行,要么全部都不执行。

redis开启事务是multi

提交事务是exec

取消事务/回滚 discard

发布订阅功能

发布消息: publish 通道(名字随便写) 信息

打开另一个终端

订阅某个频道的消息: subscribe 通道(名字随便写)

持久化

redis有两种备份方式:rdb(默认开始这个方式)跟aof

 

如何关闭rdb的备份方式:

vim  redis.conf

save 900 1 900秒有一个更改性操作就写入到rdb文件

save 300 10 300秒之内发生了10次更改性操作我就写入到rdb文件

save 60 10000 60秒以内触发了1万次更改性操作就写入到rdb文件

这三个条件一个被触发,就会启用rdb备份。

搜索save 把三个数字段注释掉即可。

同步机制:可以指定某个时间内发生多少个命令进行同步

存储内容:存储到硬盘 dump.db这个文件里,只存储值,不存储语法。存储的是redis具体的值

存放路径: 第一次启动,dump.rdb文件会根据你启动时的路径而生成。使用config get dir 可以获取此文件的路径。

优点:文件体积比aof小

因为存储的是redis具体的值,并且经过压缩,恢复速度快。

缺点:因为他的同步机制,一般设置成5分钟保存一次,但是在这种情况下,如果服务器故障,会造成5分钟的数据丢失。

如果内存数据较大,备份很耗时

aof备份的开启:

在配置文件redis.conf 查找 appendonly, 把no改成yes即打开。

存储位置:redis配置文件中dir是指定备份文件的存放路径,可以修改,修改后需加载生效。

同步机制:每秒同步或每次发生命令后同步

存储内容:备份是语法,存储的更新操作命令

优点:因为他是每秒或每更新操作触发备份,所以,当服务器故障,最多丢失1秒数据。

他不会备份整个库,你更新什么,我备份什么。

如果aof文件比较大,redis重写,只保留最小集合。(没有重复的命令)

缺点:没有压缩,体积大

因为每秒或每次操作触发备份,当并发量大时,备份慢

因为存储的是命令,恢复比不上rdb

python操作redis

首先打开redis配置文件,找到bind,把ip修改成本机ip

注意,先检查是不是安装了两个版本的redis

而后把redis.cnf中的bind修改成本机ip,而后加载配置文件

打开python

pip install redis

from redis import Redis

初始化redis实例变量:

xtredis = Redis(host=’ip’,port=6379,db=0-15中的一个)

此处ip需要去redis配置文件修改相应的bind ip

而后就可以进行相应的操作:

xtredis.set(‘username’,’lanhuiling’)

原文地址:https://www.cnblogs.com/shuaiyin/p/10983428.html