redis简介
Redis 是一个高性能的key-value数据库,有以下特点:
- 支持数据的持久化,可以将内存中的数据保存在磁盘中
- 支持key-value,list,set,zset,hash等数据结构的存储
- 支持数据的备份,即master-slave模式的数据备份。
- 性能极高,读速度是110000次/s,写速度是81000次/s 。
- 所有操作都是原子性的
- 支持 publish/subscribe, 通知, key 过期等等特性
redis安装
1、Mac 安装
Mac安装贴1
Mac安装贴2
2、ubuntu安装
启动redis
1、启动redis服务
redis-server
2、启动redis客户端
redis-cli
一个redis数据库的可视化管理工具
使用python来操作redis
# 导入redis
import redis
# 1、连接
# host是redis主机,需要redis服务端和客户端都启动 redis默认端口是6379
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set('name', 'junxi')
# 2、连接池
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
r.set('gender', 'male')
# 3、管道
pool = redis.ConnectionPool(host='192.168.0.110', port=6379)
r = redis.Redis(connection_pool=pool)
pipe = r.pipeline(transaction=True)
r.set('name', 'zhangsan')
r.set('name', 'lisi')
pipe.execute()
redis基本命令
1、set(name, value)#在Redis中设置值,默认,不存在则创建,存在则修改
2、setnx(name, value) #设置值,只有name不存在时,执行设置操作(添加)
3、setex(name, value, time) # time,过期时间
4、mset(*args, **kwargs) # 批量设置值,例如r.mset(k1="v1", k2="v2")
5、mget(keys, *args) #批量获取
6、setrange(name, offset, value) # 修改字符串内容,从指定字符串索引开始向后替换
7、setbit(name, offset, value) # 对name对应值的二进制表示的位进行操作
8、append(key, value) # 在redis name对应的值后面追加内容
……
redis基本命令——hash
1、hset(name, key, value) # 单个增加--修改(单个取出)--没有就新增,有的话就修改
2、hmset(name, mapping) # 批量增加
3、hget(name,key) # 批量取出
4、hgetall(name) # 取出所有的键值对
5、hkeys(name) # 得到所有的keys
6、hvals(name) # 得到所有的value
7、hexists(name, key) # 判断成员是否存在
8、hdel(name,*keys) # 删除键值对
参考博客
使用python来操作redis用法详解
Python—redis
Redis 命令及其 Python API
redis的三种模式
redis有三种模式:单点、主从、集群
1、单点
2、由一个master和一个slave组成复制系统是最简单的情况。 Slave之间并不相互通信,只能与master进行通信。 在实际应用场景中,MySQL复制90%以上都是一个Master复制到一个或者多个Slave的架构模式,主要用于读压力比较大的应用的数据库端廉价扩展解决方案。
https://blog.csdn.net/wang123459/article/details/79076755
https://blog.csdn.net/u010416101/article/details/79672977
https://my.oschina.net/zhangxufeng/blog/905611
https://blog.csdn.net/a67474506/article/details/50435206
负载均衡
https://www.jianshu.com/p/99be0a88517d
3、集群
redis性能测试
代码示例
# 以list形式写入redis
import redis
import pandas as pd
conn = redis.Redis(host='127.0.0.1',port=6379, decode_responses=True)
pipe = conn.pipeline()
df = pd.read_csv('./product_order_details.csv')
for i in range(0,df.shape[0]):
pipe.hset("product_order", df.ix[i,'pcid'], list(df.ix[i,:]))
pipe.execute()
# 从redis读数据
index = list(df['pcid'])
for i in range(0,1000):
pipe.hget("product_order", index[i])
result = pipe.execute()
# 以字典形式写入redis
def write_to_redis_product():
df = pd.read_csv('./product.csv')
conn = redis.Redis(host='127.0.0.1',port=6379, decode_responses=True)
pipe = conn.pipeline()
df = df.set_index('prdid').T.to_dict('list')
name_list = ['cate1','cate2','cate3','cate4','price','discprice','deal_flag','tv_flag',
'order_mobile','order_web','cart_mobile','cart_web']
for k in df.keys():
df[k] = dict(zip(name_list, df[k]))
pipe.hmset("product", df)
pipe.execute()
return
# 以字典形式从redis读出数据
def load_from_redis():
conn = redis.Redis(host='127.0.0.1', port=6379, decode_responses=True)
pipe = conn.pipeline()
prdid_list = [10115571,10140313,10344692]
pipe.hmget("product", prdid_list)
result = pipe.execute()
return
网友评论