简单的使用,主从数据库。
Redis数据库:
Redis是key-value的数据,每个数据都是一个键值对,键的类型是字符串。
值的类型分为五种:字符串string 哈希hash 列表list 集合set 有序集合zset
进入数据库 redis-cli
Auth 密码
之后才能操作
String:
概述:
String是redis最基本的类型 最大能存储512MB数据,string类型是二进制安全的,即可以为任何数据。比如:图片,数字,序列化对象
String命令:
设置:
Set key value 设置键值
SETEX key seconds value 设置键值及国企时间,以秒为单位。
MSET key value[key value…] 设置多个键值
获取:
GET key 根据键获取值,如果不存在就返回None
MGET key[key] 根据多个键获取多个值
运算:
要求:
值是数字
INCR key 将key对应的value加1
DECR key 将key对应的value减1
INCRBY key increment 将key对应的value加整数
DECRBY key decrement 将key对应的value减整数
其他:
APPEND key value 追加值
STRLEN key 获取值的长度
键:
查找键:参数支持正则
KEYS pattern
判断键是否存在,如果存在返回1,不存在返回0:
EXISTS key[key…]
查看键对应的value的类型:
TYPE key
删除键对应的值:
DEL key[key…]
EXPIRE key seconds 设置过期时间,以秒为单位。创建时没有设置过期时间则一直存在内存中,直到del
TTL key 查看有效时间,以秒为单位。
Hash
概述:
Hash用于存储对象,对象的格式为键值对
命令:
设置:
HSET key field value 设置单个属性
HMSET key field value[field value…] 设置多个属性
获取:
HGET key field 获取一个属性的值
HMGET key field [field…] 获取多个属性的值
HGETALL key 获取所有的属性
HLEN key 返回包含属性的个数
HVALS key 获取所有值
其他:
HEXISTS key field 判断属性是否存在
HDEL key field [field…]删除属性及值
HSTRLEN key field 返回值的字符串长度
List
概述:
列表的元素类型为string,按照插入顺序排序,在列表的头部或者尾部添加元素。
命令:
设置:
LPUSH key value[value…] 在头部插入数据
RPUSH key value[value…] 在尾部插入数据
LINSERT key BEFORE|AFTER pivot value 在一个元素的前或者后插入新元素
LSER key index value 设置指定索引的元素值,索引是基于0的下表,索引可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素。
LPOP key 移除并且返回key对应的list的第一个元素
RPOP key 移除并返回存于key 的list 的最后一个元素
LRANGE key start stop 返回存储在key 的列表里指定范围内的元素,start和end偏移量都是基于0的下表,偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素。
其他:
LTRIM key start stop 裁剪列表,改为原集合的一个子集,start和end偏移量都是基于0的下表,偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素。
LLEN key 返回存储在key里的list的长度
LINDEX key index 返回列表里索引对应的元素
Set
概述:
无序集合,元素为string类型,元素具有唯一性,不重复。
命令:
设置:
SADD key member[member…] 添加元素
获取:
SMEMBERS key 返回key集合所有的元素
SCARD key 返回集合元素个数
其他:
SINTER key[key…] 求多个集合的交集
SDIFF key[key…] 求某集合与其他集合的差集
SUNION key[key…] 求多个集合的合集
SISMEMBER key member 判断元素是否在集合中
Zset
概述:
Sorted set,有序集合 元素为string类型,元素具有唯一性,不重复,每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序。元素的score可以相同。
命令:
设置:
ZADD key score member[score member…] 添加
获取:
ZRANGE key start stop 返回指定范围内的元素
ZCARD key 返回元素个数
ZCOUNT key min max 返回有序集key中,score值在min和max之间的成员
ZSCORE key member 返回有序集key中,成员member的score值
在python中书写
import redis
try:
r = redis.StrictRedis(host="xuaman.top",port=6379,password="xiaoha")
#1. 根据数据类型的不同,调用不同的方法,完成读写
r.set("name", "hello")
print(r.get("name"))
#2. pipline
#缓存多条命令,然后依次执行,减少服务器-客户端之间的tcp数据包,从而提高效率
pipe = r.pipeline()
pipe.set("aa","111")
pipe.set("bb","222")
pipe.set("cc","333")
pipe.execute()
print(pipe.get("aa"))
print(r.get("aa"))
#连接上之后和命令窗口差不多就不一一写出来了。
except:
print("连接失败....")
高级使用:
发布订阅:
概述:发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅。订阅者对一个或者多个频道感兴趣,只需要接收感兴趣的消息,不需要知道什么样的发布者。发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑。客户端发到频道的消息将会被推送到所有订阅此频道的客户端。 客户端不需要主动去获取消息,只修要订阅频道,这个频道的内容就会被推送过来。
消息类型:
消息类型包含三种:
Subscribe,表示订阅成功
Unsubscribe,表示取消订阅成功
Message,表示其他终端发布消息。
如果第一部分的值时subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量。
如果第一部分的值时unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0表示当前没有订阅任何频道,当在Pub/Sub以外形态,客户端可以发出任何redis命令。
如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容。
命令:
订阅: SUBSCRIBE 频道名称[频道名称…]
取消订购: UNSUBSCRIBE 频道名称[频道名称…] 如果不写参数,表示取消所有订阅。
发布: PUBLISH 频道 消息
主从配置:
概述:
一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成强大的多级服务器集群架构。 比如:将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器。
设置主服务器的配置:
Bind 192.168.1.10
设置从服务器的配置:
Bind192.168.1.11
Slaveof 192.168.1.10 6379 (ip 端口)先写主机ip 后写端口 端口必须写。
在master和slave分别执行info命令,查看输出信息
在master上写数据 set hello world
在slave上读数据 get hello