Redis基础
- 概述
- remote dictionary sever
- Redis 是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序
- Redis可以将数据复制到任意数量的从机中
- 在redis的server端,维护着多个数据库(默认为16个)
- Redis的优点
- 异常快(内存中)
- 支持丰富的数据类型
- 操作具有原子性
- 多实用工具
- Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
安装配置
- 安装Redis
- yum install epel-release
yum install redis
- 启动Redis
- 检测Redis是否正常工作
- 执行ping命令
- 设置密码及访问来源
- vim /etc/redis.conf
- bind 0.0.0.0
requirepass passwd
- redis-server /etc/redis.conf
- systemctl restart redis
访问
- 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
- 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
- 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
- INCRBY key increment
- DECR key
- 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列表只是字符串列表,按插入顺序排序。您可以向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
- LSET key index value
- 通过索引在列表中设置元素的值(原来位置的值会被替换)
- LTRIM key start stop
- RPOP key
- RPOPLPUSH source destination
- 删除列表中的最后一个元素,将其附加到另一个列表并返回
- RPUSH key value1 [value2]
- RPUSHX key value
- 集合
- 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 有序集合和集合一样也是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与Python交互
- from redis import StrictRedis
- 创建一个StrictReids对象,与redis服务器建立连接
- sr = StrictRedis(host='localhost', port=6379, db=0, password='passwd')
- 增
- 删
- 改
- 查
- 获取键
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()