Redis
redis简介1
Redis:REmote DIctionary Server(远程字典服务器)
是完全开源免费的,用C语言编写的,遵守BSD开源协议
是一个高性能的(key/value)分布式内存数据库,基于内存运行,
并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。
Redis 与其他 key - value 缓存产品有以下三个特点:
1)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
3)Redis支持数据的备份,即master-slave模式的数据备份
为什么
1)内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
2)取最新N个数据的操作,如:可以将最新的10条评论的ID放在List集合
3)模拟类似于HttpSession这种需要设定过期时间的功能
4)发布、订阅消息系统
5)定时器、计数器
redis数据类型
数据存储方式 key value
kv模式
五大数据类型:string list set zset hash
redis基本操作
string
单键单值 key:string value:string
set/get/del/append/strlen
设置 获取 删除 追加 长度
incr/decr/incrby/decrby
要是数值才能加减
setex(键秒值)/setnx(set if not exist)
mset(获取多个键的值)mget(设置多个键的值)msetnx(修改多个【有一个重复,则全不能修改】)
expire key n
对已经存在的key设置过期时间,新设的会替代旧的
ttl key
查看过期时间 -1永不过期 -2已经过期
hash
单键单对象 key :string value:object
key:{name:zhaoliying,age:10}
hset/hget/hmset/hmget/hgetall/hdel
hset key field value 设置 key 属性 值
hget key field 获取key 属性 拿到属性值
hlen key 获取属性的个数
hexists key key里面的某个field
hkeys key 获取key里面所有的属性
hvals key 获取key里面所有的属性值
hincrby key field 整数
hincrbyfloat key field 小数
hsetnx key field 值 如果这个属性不存在 设置
列表
单键单列表 key:string value:list
lpush 从左边插入 键 值
rpush 从右边插入
lrange lrange list 0 -1 从左边开始查看范围元素
lpop 从左边每次出一个,删除
rpop 从右边每次出一个
lindex
按照索引获取值
llen
计算list 长度
lrem
lrem key 删除 n个value
ltrim
ltrim key 开始index 结束index 截取指定范围后再赋值给key
rpoplpush
rpoplpush 源列表 目的列表
从源列表右边取一个,然后从左边加入目的列表
lset
lset key index value 为列表某一个元素赋值
linsert
linsert key before/after 值1 值2
在列表的值1前面 或者后面 插入一个值2(第一个值得前面或者后面)
集合
单键单集合 key:string value :set
sadd(插入)smembers(查看)slsmember(查看存不存在)
scard
获取集合中的个数
srem
srem key 值 删除集合中的元素
srandmember
srandmember key 某个整数 随机出整数个值,不删除
spop key
随机出栈 一次一个 删除
smove
smove key1 key2 在key1里面的某个值
将key1里面的某个值赋值给key2
数学类:
sdiff:差集
sdiff key1 key 2 取key1里面和key2不同的值
sinter:交集
sinter key1 key2 取key1里面和key2里面相同的值
sunion:并集
sunion key1 key2 取key1里面和key2里面所有不重复的元素
有序集合
单键单集合key:string value:集合
在set 基础上加了一个score值(分值) 权重
之前set 是k1 v1 v2 v3
现在zset是 k1 score1 v1 score2 v2
zadd/zrange/zrange….withscores
zadd key score1 v1 score2 v2
zrange key 0 -1 / zrange key 0 -1 withscores 查看值/查看分和值
rangebyscore/zrangebyscore….withscores
zrangebyscore key 开始score 结束score 查看范围分的值
注意:( 代表不包含 zrangebyscore key (60 (90
limit 2 2 从下标为2的开始拿2个
zrem
zrem key 值 删除指定一组值
zcard/zcount key score(区间)/zrank key values值
zcard key 获取组的个数
zcount key score1 score2 获取分值在score1和score2之 间的个数
zrank key 值 获取对应值的下标
zscore key 值 获取对应值的分数
如果想要清空所有的数据库数据:flushall
如果只想要清空单个数据库数据:flushdb (先进入要清空的数据库select )
如果想要知道key的类型 type key 可以查看数据的类型
消息的订阅和发布
1)开三个终端,都去连接上redis
2)在其中两个终端上去订阅频道:subscribe 频道名(可以是多个)
3)在第三个终端上去发布消息 publish 频道名 消息信息
主从复制
1)主机:进入配置文件,把bind选项修改为自己电脑的ip
2)从机:进入配置文件,把bind选项修改为从机的ip
bind 192.168.28.12
slaveof 主机ip 6379
3)当配置完成后一定记得重启主从两个redis服务
4)主机连接:redis-cli -h 主机ip
5)从机连接:redis-cli –h 从机ip
6)在主的上面去设置值,在从的上面可以获取到值,代表主从设置完成
使用Python的redis驱动包和redis数据库交互
使用redis包里面的StrictRedis模块,创建连接对象
使用连接对象可以直接使用方法增删改查
增删改查的方法和终端命令方法相同。
redis简介1
Redis:REmote DIctionary Server(远程字典服务器)
是完全开源免费的,用C语言编写的,遵守BSD开源协议
是一个高性能的(key/value)分布式内存数据库,基于内存运行,
并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。
Redis 与其他 key - value 缓存产品有以下三个特点:
1)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
3)Redis支持数据的备份,即master-slave模式的数据备份
为什么
1)内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
2)取最新N个数据的操作,如:可以将最新的10条评论的ID放在List集合
3)模拟类似于HttpSession这种需要设定过期时间的功能
4)发布、订阅消息系统
5)定时器、计数器
redis数据类型
数据存储方式 key value
kv模式
五大数据类型:string list set zset hash
redis基本操作
string
单键单值 key:string value:string
set/get/del/append/strlen
设置 获取 删除 追加 长度
incr/decr/incrby/decrby
要是数值才能加减
setex(键秒值)/setnx(set if not exist)
mset(获取多个键的值)mget(设置多个键的值)msetnx(修改多个【有一个重复,则全不能修改】)
expire key n
对已经存在的key设置过期时间,新设的会替代旧的
ttl key
查看过期时间 -1永不过期 -2已经过期
hash
单键单对象 key :string value:object
key:{name:zhaoliying,age:10}
hset/hget/hmset/hmget/hgetall/hdel
hset key field value 设置 key 属性 值
hget key field 获取key 属性 拿到属性值
hlen key 获取属性的个数
hexists key key里面的某个field
hkeys key 获取key里面所有的属性
hvals key 获取key里面所有的属性值
hincrby key field 整数
hincrbyfloat key field 小数
hsetnx key field 值 如果这个属性不存在 设置
列表
单键单列表 key:string value:list
lpush 从左边插入 键 值
rpush 从右边插入
lrange lrange list 0 -1 从左边开始查看范围元素
lpop 从左边每次出一个,删除
rpop 从右边每次出一个
lindex
按照索引获取值
llen
计算list 长度
lrem
lrem key 删除 n个value
ltrim
ltrim key 开始index 结束index 截取指定范围后再赋值给key
rpoplpush
rpoplpush 源列表 目的列表
从源列表右边取一个,然后从左边加入目的列表
lset
lset key index value 为列表某一个元素赋值
linsert
linsert key before/after 值1 值2
在列表的值1前面 或者后面 插入一个值2(第一个值得前面或者后面)
集合
单键单集合 key:string value :set
sadd(插入)smembers(查看)slsmember(查看存不存在)
scard
获取集合中的个数
srem
srem key 值 删除集合中的元素
srandmember
srandmember key 某个整数 随机出整数个值,不删除
spop key
随机出栈 一次一个 删除
smove
smove key1 key2 在key1里面的某个值
将key1里面的某个值赋值给key2
数学类:
sdiff:差集
sdiff key1 key 2 取key1里面和key2不同的值
sinter:交集
sinter key1 key2 取key1里面和key2里面相同的值
sunion:并集
sunion key1 key2 取key1里面和key2里面所有不重复的元素
有序集合
单键单集合key:string value:集合
在set 基础上加了一个score值(分值) 权重
之前set 是k1 v1 v2 v3
现在zset是 k1 score1 v1 score2 v2
zadd/zrange/zrange….withscores
zadd key score1 v1 score2 v2
zrange key 0 -1 / zrange key 0 -1 withscores 查看值/查看分和值
rangebyscore/zrangebyscore….withscores
zrangebyscore key 开始score 结束score 查看范围分的值
注意:( 代表不包含 zrangebyscore key (60 (90
limit 2 2 从下标为2的开始拿2个
zrem
zrem key 值 删除指定一组值
zcard/zcount key score(区间)/zrank key values值
zcard key 获取组的个数
zcount key score1 score2 获取分值在score1和score2之 间的个数
zrank key 值 获取对应值的下标
zscore key 值 获取对应值的分数
如果想要清空所有的数据库数据:flushall
如果只想要清空单个数据库数据:flushdb (先进入要清空的数据库select )
如果想要知道key的类型 type key 可以查看数据的类型
消息的订阅和发布
1)开三个终端,都去连接上redis
2)在其中两个终端上去订阅频道:subscribe 频道名(可以是多个)
3)在第三个终端上去发布消息 publish 频道名 消息信息
主从复制
1)主机:进入配置文件,把bind选项修改为自己电脑的ip
2)从机:进入配置文件,把bind选项修改为从机的ip
bind 192.168.28.12
slaveof 主机ip 6379
3)当配置完成后一定记得重启主从两个redis服务
4)主机连接:redis-cli -h 主机ip
5)从机连接:redis-cli –h 从机ip
6)在主的上面去设置值,在从的上面可以获取到值,代表主从设置完成
使用Python的redis驱动包和redis数据库交互
使用redis包里面的StrictRedis模块,创建连接对象
使用连接对象可以直接使用方法增删改查
增删改查的方法和终端命令方法相同。