2-Redis
Posted lotuslaw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-Redis相关的知识,希望对你有一定的参考价值。
Redis基础
- 概述
- remote dictionary sever
- Redis 是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序
- Redis可以将数据复制到任意数量的从机中
- 在redis的server端,维护着多个数据库(默认为16个)
- Redis的优点
- 异常快(内存中)
- 支持丰富的数据类型
- 操作具有原子性
- 多实用工具
- Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
安装配置
- 安装Redis
- yum install epel-release
yum install redis
- yum install epel-release
- 启动Redis
- systemctl start redis
- 检测Redis是否正常工作
- redis-cli
- 执行ping命令
- 得到结果为PONG表明Redis已成功安装
- 设置密码及访问来源
- vim /etc/redis.conf
- bind 0.0.0.0
requirepass passwd
- bind 0.0.0.0
- systemctl restart redis
- vim /etc/redis.conf
访问
- redis-cli -h 192.168.88.130 -a passwd
Redis命令
- 与Redis键相关的命令
- DEL key该命令用于在 key 存在时删除 key
- EXISTS key 检查给定 key 是否存在
- EXPIRE key seconds为给定 key 设置过期时间
- PEXPIRE key milliseconds 设置 key 的过期时间以毫秒计
- KEYS pattern 查找所有符合给定模式( pattern)的 key
- keys *
- MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中
- PERSIST key 移除 key 的过期时间,key 将持久保持
- PTTL key 以毫秒为单位返回 key 的剩余的过期时间
- TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。-1永远不过期,-2过期了
- RANDOMKEY 从当前数据库中随机返回一个 key
- RENAME key newkey 修改 key 的名称
- TYPE key 返回 key 所储存的值的类型
- 字符串命令
- String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等
- SET key value
- 此命令设置指定键的值(覆盖设置)
- 一个键对应一个字符串
- GET key
- 获取指定键的值
- GETRANGE key start end
- 获取存储在键上的字符串的子字符串。下标从0开始
- GETSET key value
- 设置键的字符串值并返回其旧值(相比于set多了一个get功能)
- MGET key1 key2..
- 获取所有给定键的值
- SETEX key seconds value
- 使用键和到期时间来设置值
- SETNX key value
- 设置键的值,仅当键不存在时
- SETRANGE key offset value
- 在指定偏移处开始的值处覆盖字符串的一部分,从offset处开始覆盖
- STRLEN key
- 获取存储在键中的值的长度
- MSET key value key value …
- 为多个键分别设置它们的值
- MSETNX key value key value …
- 为多个键分别设置它们的值,仅当键不存在时
- PSETEX key milliseconds value
- 设置键的值和到期时间(以毫秒为单位)
- INCR key
- 将键的整数值增加1
- INCRBY key increment
- 将键的整数值按给定的数值增加
- 字符串也可以存数
- 将键的整数值按给定的数值增加
- DECR key
- 将键的整数值减1
- DECRBY key decrement
- 按给定数值减少键的整数值
- APPEND key value
- 将指定值附加到键
- 哈希
- Redis哈希(Hashes)是键值对的集合。Redis哈希是字符串字段和字符串值之间的映射。因此,它们用于存储对象
- 一个键对应一个‘字典’
- HDEL key field2 [field2]
- 删除一个或多个哈希字段。使用 del 命令删除整个 hash 键和属性值
- HEXISTS key field
- 判断是否存在散列字段
- HGET key field
- 获取存储在指定键的哈希字段的值
- HGETALL key
- 获取存储在指定键的哈希中的所有字段和值
- HINCRBY key field increment
- 将哈希字段的整数值按给定数字增加
- HINCRBYFLOAT key field increment
- 将哈希字段的浮点值按给定数值增加
- HKEYS key
- 获取哈希中的所有字段
- HLEN key
- 获取散列中的字段数量
- HMGET key field1 [field2]
- 获取所有给定哈希字段的值
- HMSET key field1 value1 field2 [value2 ]
- 为多个哈希字段分别设置它们的值
- HSET key field value
- 设置散列字段的字符串值
- 哈希>哈希字段>哈希字段的值
- 设置散列字段的字符串值
- HSETNX key field value
- 仅当字段不存在时,才设置散列字段的值
- HVALS key
- 获取哈希中的所有值
- Redis哈希(Hashes)是键值对的集合。Redis哈希是字符串字段和字符串值之间的映射。因此,它们用于存储对象
- 列表
- Redis列表只是字符串列表,按插入顺序排序。您可以向Redis列表的头部或尾部添加元素
- 一个键对应一个列表
- BRPOP key1 [key2 ] timeout
- 删除并获取列表中的最后一个元素,会阻塞,直到有一个元素可用
- BLPOP key1 [key2 ] timeout
- 删除并获取列表中的第一个元素,会阻塞,直到有一个元素可用,BLPOP alist 2,2是阻塞的时间
- BRPOPLPUSH source destination timeout
- 从列表中弹出值,将其推送到另一个列表并返回它; 会阻塞,直到一个可用
- LINDEX key index
- 通过其索引从列表获取元素
- LINSERT key BEFORE/AFTER pivot value
- 在列表中的另一个元素之前或之后插入元素
- LLEN key
- 获取列表的长度
- LPOP key
- 删除并获取列表中的第一个元素
- LPUSH key value1 [value2]
- 将一个或多个值添加到列表
- LPUSHX key value
- 仅当列表存在时,才向列表添加值
- LRANGE key start stop
- 从列表中获取一系列元素,切片
- LREM key count value
- 从列表中删除元素(count是删除数量)
- LSET key index value
- 通过索引在列表中设置元素的值(原来位置的值会被替换)
- LTRIM key start stop
- 修剪列表的指定范围(保留指定范围)
- RPOP key
- 删除并获取列表中的最后一个元素
- RPOPLPUSH source destination
- 删除列表中的最后一个元素,将其附加到另一个列表并返回
- RPUSH key value1 [value2]
- 将一个或多个值附加到列表
- RPUSHX key value
- 仅当列表存在时才将值附加到列表
- Redis列表只是字符串列表,按插入顺序排序。您可以向Redis列表的头部或尾部添加元素
- 集合
- Redis集合是唯一字符串的无序集合。 唯一值表示不允许键(集合)中有重复的数据
- 一个键对应一个集合
- SADD key member1 [member2]
- 将一个或多个成员添加到集合
- SCARD key
- 获取集合中的成员数
- SDIFF key1 [key2]
- 计算差集
- SDIFFSTORE destination key1 [key2]
- 计算差集并将结果集存储在键中
- SINTER key1 [key2]
- 计算交集,获取到共有的元素
- SINTERSTORE destination key1 [key2]
- 交叉多个集合并将结果集存储在键中
- SISMEMBER key member
- 判断确定给定值是否是集合的成员
- SMOVE source destination member
- 将成员从一个集合移动到另一个集合
- SPOP key
- 从集合中删除并返回随机成员
- SRANDMEMBER key [count]
- 从集合中获取一个或多个随机成员
- SREM key member1 [member2]
- 从集合中删除一个或多个成员
- SUNION key1 [key2]
- 计算并集
- SUNIONSTORE destination key1 [key2]
- 添加多个集并将结果集存储在键中
- SSCAN key cursor match[MATCH pattern] count[COUNT count]
- 递增地迭代集合中的元素,依据游标迭代
- scan 176 MATCH *11* COUNT 1000
- SMEMBERS key
- 返回集合中的所有成员
- Redis集合是唯一字符串的无序集合。 唯一值表示不允许键(集合)中有重复的数据
- 有序集合
- Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序
- 顺序/分数/值
- ZADD key score1 member1 [score2 member2]向有序集合添加一个或多个成员,或者更新已存在成员的分数
- ZCARD key 获取有序集合的成员数
- ZCOUNT key min max 计算在有序集合中指定区间分数的成员数(包头包尾)
- ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
- ZINTERSTORE destination numkeys key [key ...] 计算给定的一个或多个有序集合的交集并将结果集存储在新的有序集合 key 中(计算给定的一个或多个有序集的交集,其中给定 key的数量必须以 numkeys参数指定)
- ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量(lexion字典)zlexcount z1 [a [y,注意max min,+表示正无限, 而 -表示负无限,(表示开区间(指定的值不会被包含在范围之内), 而 [则表示闭区间(指定的值会被包含在范围之内)
- ZRANGE key start stop [WITHSCORES]通过索引区间返回有序集合成指定区间内的成员(注意区分索引区间/分数/字典区间)
- ZRANGEBYLEX key min max [LIMIT offset count]通过字典区间返回有序集合的成员
- ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]通过分数返回有序集合指定区间内的成员
- ZRANK key member 返回有序集合中指定成员的索引
- ZREM key member member...移除有序集合中的一个或多个成员
- ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
- ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员
- ZREMRANGEBYSCORE key min max移除有序集合中给定的分数区间的所有成员
- ZREVRANGE key start stop [WITHSCORES]返回有序集中指定区间内的成员,通过索引,分数从高到底
- ZREVRANGEBYSCORE key max min [WITHSCORES]返回有序集中指定分数区间内的成员,分数从高到低排序
- ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
- ZSCORE key member 返回有序集中,成员的分数值
- ZUNIONSTORE destination numkeys key [key ...]计算给定的一个或多个有序集的并集,并存储在新的 key 中
- ZSCAN key cursor [MATCH pattern] [COUNT count]迭代有序集合中的元素(包括元素成员和元素分值)
- Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序
Redis与Python交互
- from redis import StrictRedis
- 需要安装redis包
- 创建一个StrictReids对象,与redis服务器建立连接
- sr = StrictRedis(host=\'localhost\', port=6379, db=0, password=\'passwd\')
- 增
- sr.set(\'py1\', \'gj\')
- py1键及其值gj
- sr.set(\'py1\', \'gj\')
- 删
- sr.delete(\'py1\')
- 改
- sr.set(\'py1\',\'he\')
- 查
- sr.get(\'py1\')
- 获取键
- sr.keys()
from redis import *
# 创建一个StrictReids对象,与redis服务器建立连接
sr = StrictRedis(host=\'localhost\', port=6379, db=0)
#1.增
try:
result = sr.set(\'py1\', \'gj\')
# result如果为true,则表示添加成功
print(result)
except Exception as e:
print(e)
#2.删
#result = sr.delete(\'py1\')
#print(result)
#3.改
result = sr.set(\'py1\',\'he\')
#4.查
#如果建不存在,则返回None
result = sr.get(\'py1\')
#5.获取建
result = sr.keys()
以上是关于2-Redis的主要内容,如果未能解决你的问题,请参考以下文章