Redis简介

Redis是一使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日个开源的志型、Key-Value数据库,并提供多种语言的API。

从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色

Redis和其他数据库相比有如下特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份

Redis的优势在于:

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis安装及配置

redis安装

linux下,结果以下步骤安装redis

step1:下载 wget http://download.redis.io/releases/redis-3.2.8.tar.gz

step2:解压 tar -zxvf redis-3.2.8.tar.gz

step3:复制,放到usr/local目录下 sudo mv ./redis-3.2.8 /usr/local/redis/

step4:进入redis⽬录 cd /usr/local/redis/

step5:生成 sudo make

step6:测试,这段运行时间会较长 sudo make test

step7:安装,将redis的命令安装到/usr/bin/目录 sudo make install

step8:安装完成后,我们进入目录/usr/bin中查看 cd /usr/bin ls -all 查看

redis-server   redis服务器

redis-cli   redis命令行客户端

redis-benchmark   redis性能测试工具

redis-check-aof   AOF文件修复工具

redis-check-rdb   RDB文件检索工具

step9:配置文件,移动到/etc/目录下 配置文件目录为/usr/local/redis/redis.conf

sudo  cp  /usr/local/redis/redis.conf /etc/redis/复制一份,一般修改配置文件前,都先复制一份备用。

Redis官方文档:http://redis.cn/

redis核心配置

参考:https://blog.csdn.net/ljphilp/article/details/52934933

Redis的配置信息在/etc/redis/redis.conf下,通过:sudo vi /etc/redis/redis.conf查看

核心配置选项:

  • 绑定ip:bind 127.0.0.1默认为止允许本机访问。如果需要远程访问,可将此行注释,或者绑定一个真实的ip。
  • 端口:默认为6379
  • daemonize  yes :是否以守护进程运行
  1. 如果以守护进程运行,则不会在命令行中阻塞,类似于服务
  2. 如果以非守护进程运行,则当前终端被阻塞
  3. 设置为yes表示守护进程,no为非守护进程
  4. 一般设置为yes
  • dbfilename  dump.rdf  :数据文件
  • dir /var/lib/redis  :数据文件存储路径
  • logfile /var/log/redis/redis-server.log:日志文件
  • dabase 16 :数据库,默认为16个
  • slaveof :主从赋值,类似于双机备份

Redis服务端和客户端简单使用

服务端:

  • redis-server : 启动服务端
  • redis-server -help : 使用help查看帮助文档
  • sudo service redis start :启动redis
  • sudo service reids stop:停止redis
  • sudo service reids restart:重启redis

客户端:

  • redis-cli :启动客户端
  • redis-cli -help:使用help查看帮助文档
  • select n:选择数据库,数据库没有名称,默认有16个,通过0-15表示,默认链接第一个数据库。

个人习惯:

  • ps -ef | grep  redis :查看redis服务器进程
  • sudo kill -9 pid:杀死redis服务器
  • sudo redis-server /etc/redis/redis.conf :指定加载的配置文件

Redis数据结构及基本使用

数据结构

redis是key-value的数据结构,每条数据都是一个键值对;键类型为字符串,且不能重复

值类型分为五种:

  • 字符串string
  • 哈希hash
  • 列表list
  • 集合set
  • 有序集合zset

基本使用

# coding = utf-8
"""
# 键命令
keys pattern : 查看键,支持正则
keys * : 查看所有键 exists key : 查看键是否存在,存在返回1,不存在返回0
type key : 查看键对应的value的类型
del key1 key2 : 删除键及对应的值 # string字符串
set key value : 保存键和值
get key : 获取键对应的值,不存在返回bil setex key seconds value : 设置键值,及其对应的过期时间,单位为s
ttl key : 查看键还有多久过期 mset key1 value1 key2 value2 : 设置多个键及其对应的值
mget key1 key2 : 获取多个键的值 append key value : 追加键值 # list 列表
lpush key value1 value2 : 从左侧增加插入数据
rpush key value1 value2 : 从右侧增加插入数据 linsert key before value new_value : 在指定的value前插入值新值(new_value)
linsert key after value new_value : 在指定的value后插入新值(new_value) lrange key start stop : 获取key的角标从start到stop的值
lrange key 0 -1 : 获取key的列表中所有值(角标操作和列表相同) lset key index value : 设置指定索引位置的元素值 lrem key count value : 将列表中出现count次的value 移除
其中,count > 0表示从头开始移除
count < 0 表示从尾开始移除 # hash 哈希类型   # 哈希类型用于存储对象,对象结构为属性和值,值的类型为字符串  
hset key field value : 设置单个属性及其对应的值
hmset key field1 value1 field2 value2 : 设置多个属性及其对应的值 hkeys key : 获取指定键的所有属性
hget key field : 获取一个属性的值
hmget key field1 field2 : 获取多个属性的值
hvals key : 获取所有属性的值 删除整个hash键及对应的值,使用del命令
hdel key field1 field2 : 删除属性,属性对应的值会一起呗删除 # set 无序集合
sadd key member1 member2 : 添加元素 smembers key : 获取所有元素
srem key : 删除元素 # zset 有序集合
zadd key score1 member1 score2 member2 : 添加元素
zrange key start stop : 获取元素,操作同python中的set zrangebyscore key min max : 获取score在min和max间的member zscroe key member : 返回member的score值 zrem key member1 member : 删除指定元素
zremrangebyscore key min max : 删除score在指定范围的元素 """

Redis与python交互

python操作redis需要安装redis包,有如下安装方式:

  • pip install redis
  • easy install redis

基本上和redis操作相同

import redis 

# 创建redis实例,与redis服务器建立连接,选择数据库3
rds = redis.StrictRedis(host='localhost', port=6379, db=3) # 添加一个键值对,返回一个布尔型result
result = rds.set('name', 'zz')
# 获取name的值,返回name的值,若name没有值,返回None
result_get = rds.get('name') # 修改.利用redis的键唯一特性实现修改
rds.set('name', 'ZZ') # 删除.通过键删除,成功则返回受影响的键的个数
result_del = rds.delete('name')

Redis主从概念

  • 一个master可以拥有多个slave,一个slave也可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
  • master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1
  • 通过主从配置可以实现读写分离
  • master和slave都是一个redis实例(redis服务)

修改配置:

首先修改主的配置文件:etc/redis/redis.conf

sudo vi redis.conf

bind 192.168.xxx.xxx

然后重启redis服务:

sudo service redis stop

redis-server redis.conf

然后配置从

复制etc/redis/redis.conf文件

sudo cp redis.conf ./slave.conf

修改redis/slave.conf文件

编辑内容:

bind 192.168.xxx.xxx

slaveof 192.168.xxx.xxx 6379

然后启动服务:sudo redis-server slave.conf

使用:redis-cli -h 192.168.xxx.xxx info Replication查看主从关系

python与redis交互及redis基本使用的更多相关文章

  1. python与redis交互(4)

    python可以使用redis模块来跟redis交互 redis模块的使用 安装模块: pip3 install redis 导入模块:import redis 连接方式 严格连接模式:r=redis ...

  2. linux上部署redis实现与Python上的redis交互(有坑)

    1.概念 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 2.linux安装redis 2.1yum源安装redis(不推荐) #前提得配置好阿里 ...

  3. python命令行下安装redis客户端

    1. 安装文件: https://pypi.python.org/pypi/setuptools 直接下载然后拷贝到python目录下同下面步骤 下载 ez_setup.py>>> ...

  4. python运维开发(十一)----python操作缓存memcache、redis

    内容目录: 缓存 memcache redis memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数 ...

  5. Python之异步IO&RabbitMQ&Redis

    协程: 1.单线程运行,无法实现多线程. 2.修改数据时不需要加锁(单线程运行),子程序切换是线程内部的切换,耗时少. 3.一个cpu可支持上万协程,适合高并发处理. 4.无法利用多核资源,因为协程只 ...

  6. Python全栈开发之---redis数据库

    1.redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...

  7. 使用pipeline减少与redis交互次数

    1.redis_pipeline=redis_cli.pipeline() 2.redis_pipeline.setex()此语句可写多条 3.redis_pipeline.execute() # # ...

  8. win10下使用python访问vmbox中的redis

    了解到redis没有windows的官方支持,所以在vmbox中的ubuntu装了redis#在ubuntu中 #搜索redis相关软件信息 apt-cache search ^redis #不清楚为 ...

  9. Java与redis交互、Jedis连接池JedisPool

    Java与redis交互比较常用的是Jedis. 先导入jar包: commons-pool2-2.3.jar jedis-2.7.0.jar 基本使用: public class RedisTest ...

随机推荐

  1. react框架安装和使用

    react 其实react跟vue差不多, 区别:vue-  双向数据绑定, react  单向数据绑定. 中文文档:https://react.docschina.org/ 第一步:安装方式,不能直 ...

  2. PHP 输出XML字符串

    <?php echo htmlentities( $xml_string);?>

  3. Logstash 安装及简单实用(同步MySql数据到Elasticsearch)(Windows)

    Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件 Windows环境: 1.下载logstas ...

  4. CTR@DeepFM

    1. DeepFM算法 结合FM算法和DNN算法,同时提取低阶特征和高阶特征,然后组合.FM算法负责对一阶特征及由一阶特征两两组合成的二阶特征进行特征提取:DNN算法负责对由输入的一阶特征进行全连接等 ...

  5. (大模拟紫题) Luogu P1953 易语言

    原题链接:P1953 易语言 (我最近怎么总在做大模拟大搜索题) 分别处理两种情况. 如果只有一个1或0 直接设一个cnt为这个值,每次输入一个新名字之后把数字替换成cnt,最后cnt++即可. 注意 ...

  6. DP动态规划学习笔记

    作为考察范围最广,考察次数最多的算法,当然要开一篇博客来复习啦. 子曰:温故而知新,可以为师矣 我复习DP时有一些自己对DP的理解,也就分享出来吧. ——正片开始—— 动态规划算法,即Dynamic ...

  7. 【XSY2564】sequence

    Description [题目描述] 给定一个长度为n的由['0'..'9']组成的字符串s,v[i,j]表示由字符串s第i到第j位组成的十进制数字. 将它的某一个上升序列定义为:将这个字符串切割成m ...

  8. how2heap 源码及输出

    备个份,慢慢写总结 1 first_fit #include <stdio.h> #include <stdlib.h> #include <string.h> i ...

  9. spring session源码解析

    模块划分 core部分代码 存储实现部分部分: jdbc实现 具体存储的实现类 例如:org.springframework.session.jdbc.JdbcOperationsSessionRep ...

  10. P5304旅行者(比bk201还要流氓的解法)

    题目如上. 暴力碾标算,n^2过百万!! 作为一道黑题它确实有点点水(如果是畜生解法的话) 就是找出两两点之间的最短路的最小值. 本来是很高深的一题,要跑两遍最短路啊,然后染色啊,再拓展什么的,但是! ...