马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Redis 是一个开源的内存数据布局存储体系,通常用于缓存和数据存储。它支持多种数据布局,如字符串、哈希、列表、聚集、有序聚集等,而且提供了丰富的下令来利用这些数据布局。Redis 的特性使其非常恰当用作数据库、缓存、消息署理等。
redis 是一个内存数据库,存放了诸多键与值
一,redis数据库的特性
- 内存存储: Redis 将数据存储在内存中,提供了非常快的数据访问速率。可以选择将数据长期化到磁盘以防止数据丢失
- 长期化:
- RDB(快照): 定期将数据集快照生存到磁盘。
- AOF(追加文件): 将每次写利用纪录到日记中,可以实现更高的数据安全性。
二,启动redis服务
本地运行redis库
黑窗口下令框输入指令:redis-server 背面跟上redis.conf 启动redis服务
保持该服务的窗口不关闭,另打开下令窗口 输入指令:redis-cli 即可进入到redis利用体系
pycharm上利用redis
终端下载 pip install redis
导入模块 import redis
创建毗连 client = redis.Redis()
关闭毗连
linux上利用redis 与本地雷同
本地通过ubuntu 长途利用redis 只需在创建毗连时,在括号内添加 ubuntu ip 和暗码
redis 可视化工具:RDM
RDM 可毗连本地大概长途
毗连本地须要在黑窗口打开redis服务
毗连长途须要启动ubuntu,并在毗连设置时设置对应的ip
三,redis数据范例以及对应利用
1.redis 共有五种数据范例
分别为 string 字符串
list 列表
hash 哈希表
set 聚集
zset 有序聚集
2.分别对应的利用
string利用
- string字符串操作
- # 设置键值对,插入
- # client.set('id',101)
- # # 插入多个
- # client.mset({'name':'小龙','age':21})
- # 查询键的值
- # print(client.get('id'))
- # 查询多个键的值
- # print(client.mget(['id', 'name', 'age']))
- # 设置插入键值对时,给予键的存活时间
- # client.set('nothing',20,ex= 50)
- # 赋予/修改键的存活时间
- # client.setex('id', 5,101 )
- # print(client.ttl('id'))
- # 增加键值
- # client.incrby('id',amount=10)
- # 减少键值
- # client.decrby()
- # 对键的操作
- # 获取键的类型
- # print(client.type('id'))
- # 删除键
- # client.delete('name')
- # 设置键的有效期
- # client.expire('id',20)
- # 移除有效期限
- # client.persist('id')
- # 显示有效期 -1 即长生不老
- # print(client.ttl('id'))
复制代码 list利用
- # list列表操作
- # 插入 左侧插入
- client.lpush('kl', 1, 2, 3)
- # 右侧插入
- client.rpush('kl', 0, -1, -2)
- # 查看索引范围内元素
- # print(client.lrange('kl', 0, 2))
- # 查看索引所在单个元素
- # print(client.lindex('kl', 2))
- # 删除键值
- # 删除最左侧一个并返回
- # print(client.lpop('kl'))
- # 删除最右侧一个并返回
- # client.rpop('kl')
- # 切割 保留索引范围内元素,其余删除
- # client.ltrim('kl',0,1)
- # 获取 列表长度
- # print(client.llen('kl'))
复制代码 hash利用
- # hash表
- # hash 表的值是 一个键值对
- # 设置 插入
- # client.hset('hash','key1','value1')
- # 插入多个 (将要被弃用,但能插入成功)
- # client.hmset('hash',{'key2':'value2','key3':'value3'})
- # 删除哈希表中的键
- # client.hdel('hash','key3')
- # 获取所有键和值
- # print(client.hgetall('hash'))
- # 获取哈希表中键值对的键
- # print(client.hkeys('hash'))
- # 获取哈希表结构中键值对的值
- # print(client.hvals('hash'))
- # 返回哈希表结构中键值对的个数
- # print(client.hlen('hash'))
- # 检查哈希键值对是否存在
- # print(client.hexists('hash', 'key1'))
复制代码 聚集利用
- # set集合 无序和不重复
- # 添加成员 可以添加多个
- # client.sadd('set',1,2,3,1,2,5)
- # 删除成员 可以删除多个
- # client.srem('set',2)
- # 获取所有成员
- print(client.smembers('set'))
- # 查看成员是否在集合中 存在返回1 不存在返回0
- print(client.sismember('set', 1))
- # 获取成员总数量
- print(client.scard('set'))
- # 集合与集合之间的操作 交集,并集,差集
- # 交集
- print(client.sinter(['set', 'set2']))
- # 并集
- print(client.sunion(['set', 'set2']))
- # 差集 返回 前面集合中有,后面集合中没有的元素
- print(client.sdiff(['set2', 'set']))
复制代码 zset利用
- # zset 有序列表
- # 添加成员
- # client.zadd('zset',{'豪坤':10,'龙崽':20,'小宇':100,'aa':0,'bb':50})
- # 删除成员
- # client.zrem('zset','bb')
- # 获取成员数量
- print(client.zcard('zset'))
- # 获取所有成员 按照分数(升序/降序) 索引范围内
- # print(client.zrange('zset', 2, 3))
- # 获取成员的权重值,(分数score)
- print(client.zscore('zset', '小宇'))
- # 返回指定范围内的成员数量
- print(client.zcount('zset', 50, 100))
复制代码 四,redis常见利用场景
redis 常与 mysql 连合利用:
由于redis的存储位置是内存,而mysql存储在磁盘,以是redis中数据的查询服从要远远高于mysql
核心思绪:在查询数据时,先向redis查询,假如redis中查询不到,就向mysql中查询
假如mysql查询到了,返回数据,并把这条数据加到redis库中,方便了日后的查询
|