美文网首页
项目工具——redis

项目工具——redis

作者: 谦芊珺 | 来源:发表于2019-11-20 15:18 被阅读0次

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安装

Ubuntu redis安装与使用

启动redis

1、启动redis服务
redis-server

2、启动redis客户端
redis-cli

一个redis数据库的可视化管理工具

treeNMS

使用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性能测试

redis-benchmark

代码示例

# 以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

相关文章

网友评论

      本文标题:项目工具——redis

      本文链接:https://www.haomeiwen.com/subject/jixakxtx.html