1.buntu 安装redis
方式一 :apt安装
在 Ubuntu 系统安装 Redi 可以使用以下命令:
$sudo apt-get update
$sudo apt-get install redis-server
启动 Redis
$ redis-server
查看 redis 是否启动?
$ redis-cli
以上命令将打开以下终端:
redis 127.0.0.1:>
127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。
redis 127.0.0.1:> ping PONG
以上说明我们已经成功安装了redis。
方式二:编译安装
保证网络畅通,选定好下载工作路径,执行以下命令下载redis-3.2.6:
sudo wget http://download.redis.io/releases/redis-3.2.6.tar.gz
解压该文件:
sudo tar -zxvf redis-3.2..tar.gz
会在当前目录下生成文件夹redis-3.2.6,我把它移动到了/usr/redis目录下:
如果没有安装gcc,需要先安装:
sudo apt-get install gcc
进入到redis-3.2.6目录下,依次执行下面两条命令:
sudo make
sudo make install
会安装到目录/usr/local/bin下:
现在进入先前解压后得到的文件夹(我的在/usr/redis),复制配置文件redis.conf到/etc/redis/下,并用vi命令编辑该文件,将“daemonize no”修改为“daemonize yes”,即设置成作为后台进程运行,修改完成后保存退出。
进入到/usr/local/bin目录下,执行命令:(默认端口6379)
redis-server /etc/redis/redis.conf
redis-cli -p
然后执行命令ping,若输出为pong,则证明服务成功启动。
执行命令
set k1 helloworld
get ki
会输出如下信息:
执行quit命令退出,现在可以通过下面的命令查看到该进程:
ps -ef|grep redis
运行
- 启动服务器:在桌面目录
redis-server
按ctrl+c停止
- 启动客户端:在新终端中运行如下代码
redis-cli
- 运行命令
ping
set 'a' ''
- 当添加键值后,发现在当前运行的目录下,创建了一个文件:dump.rdb,这个文件用于将数据持久化存储
基本配置
- 在源文件/usr/local/redis目录下,文件redis.conf为配置文件
- 绑定地址:如果需要远程访问,可将此行注释
bind 127.0.0.1
- 端口,默认为6379
port
- 是否以守护进程运行
- 如果以守护进程运行,则不会在命令行阻塞,类似于服务
- 如果以非守护进程运行,则当前终端被阻塞,无法使用
- 推荐改为yes,以守护进程运行
daemonize no|yes
- 数据文件
dbfilename dump.rdb
- 数据文件存储路径
dir的默认值为./,表示当前目录
推荐改为:dir /var/lib/redis
使用配置文件方式启动
- 直接运行redis-server会直接运行,阻塞当前终端
- 一般配置文件都放在/etc/目录下
sudo cp /usr/local/redis/redis.conf /etc/redis/
- 推荐指定配置文件启动
sudo redis-server /etc/redis/redis.conf
- 停止redis服务
ps ajx|grep redis
sudo kill - redis的进程id
数据操作
- redis是key-value的数据,所以每个数据都是一个键值对
- 键的类型是字符串
值的类型分为五种:
- 字符串string
- 哈希hash
- 列表list
- 集合set
- 有序集合zset
数据操作的全部命令,可以查看中文网站
- 接下来逐个介绍操作各类型的命令
tring
- string是redis最基本的类型
- 最大能存储512MB数据
- string类型是二进制安全的,即可以为任何数据,比如数字、图片、序列化对象等
命令
设置
- 设置键值
set key value
- 设置键值及过期时间,以秒为单位
SETEX key seconds value
- 设置多个键值
MSET key value [key value ...]
获取
- 根据键获取值,如果不存在此键则返回nil
GET key
- 根据多个键获取多个值
MGET key [key ...]
运算
- 要求:值是数字
- 将key对应的value加1
INCR key
- 将key对应的value加整数
INCRBY key increment
- 将key对应的value减1
DECR key
- 将key对应的value减整数
DECRBY key decrement
其它
- 追加值
APPEND key value
- 获取值长度
STRLEN key
键的命令
- 查找键,参数支持正则
KEYS pattern
- 判断键是否存在,如果存在返回1,不存在返回0
EXISTS key [key ...]
- 查看键对应的value的类型
TYPE key
- 删除键及对应的值
DEL key [key ...]
- 设置过期时间,以秒为单位
- 创建时没有设置过期时间则一直存在,直到使用使用DEL移除
EXPIRE key seconds
- 查看有效时间,以秒为单位
TTL key
hash
- hash用于存储对象,对象的格式为键值对
命令
设置
- 设置单个属性
HSET key field value
- 设置多个属性
HMSET key field value [field value ...]
获取
- 获取一个属性的值
HGET key field
- 获取多个属性的值
HMGET key field [field ...]
- 获取所有属性和值
HGETALL key
- 获取所有的属性
HKEYS key
- 返回包含属性的个数
HLEN key
- 获取所有值
HVALS key
其它
- 判断属性是否存在
HEXISTS key field
- 删除属性及值
HDEL key field [field ...]
- 返回值的字符串长度
HSTRLEN key field
list
- 列表的元素类型为string
- 按照插入顺序排序
- 在列表的头部或者尾部添加元素
命令
设置
- 在头部插入数据
LPUSH key value [value ...]
- 在尾部插入数据
RPUSH key value [value ...]
- 在一个元素的前|后插入新元素
LINSERT key BEFORE|AFTER pivot value
- 设置指定索引的元素值
- 索引是基于0的下标
- 索引可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LSET key index value
获取
- 移除并且返回 key 对应的 list 的第一个元素
LPOP key
- 移除并返回存于 key 的 list 的最后一个元素
RPOP key
- 返回存储在 key 的列表里指定范围内的元素
- start 和 end 偏移量都是基于0的下标
- 偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LRANGE key start stop
其它
- 裁剪列表,改为原集合的一个子集
- start 和 end 偏移量都是基于0的下标
- 偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LTRIM key start stop
- 返回存储在 key 里的list的长度
LLEN key
- 返回列表里索引对应的元素
LINDEX key index
set
- 无序集合
- 元素为string类型
- 元素具有唯一性,不重复
命令
设置
- 添加元素
SADD key member [member ...]
获取
- 返回key集合所有的元素
SMEMBERS key
- 返回集合元素个数
SCARD key
其它
- 求多个集合的交集
SINTER key [key ...]
- 求某集合与其它集合的差集
SDIFF key [key ...]
- 求多个集合的合集
SUNION key [key ...]
- 判断元素是否在集合中
SISMEMBER key member
zset
- sorted set,有序集合
- 元素为string类型
- 元素具有唯一性,不重复
- 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
- 元素的score可以相同
命令
设置
- 添加
ZADD key score member [score member ...]
获取
- 返回指定范围内的元素
ZRANGE key start stop
- 返回元素个数
ZCARD key
- 返回有序集key中,score值在min和max之间的成员
ZCOUNT key min max
- 返回有序集key中,成员member的score值
ZSCORE key member
高级
- 主要讨论发布订阅模块、主从配置两个知识点
发布订阅
- 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅
- 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的
- 发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑
- 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端
- 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来
消息的格式
- 推送消息的格式包含三部分
- part1:消息类型,包含三种类型
- subscribe,表示订阅成功
- unsubscribe,表示取消订阅成功
- message,表示其它终端发布消息
- 如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
- 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令
- 如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容
命令
- 订阅
SUBSCRIBE 频道名称 [频道名称 ...]
- 取消订阅
- 如果不写参数,表示取消所有订阅
UNSUBSCRIBE 频道名称 [频道名称 ...]
- 发布
PUBLISH 频道 消息
主从配置
- 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
- 比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器
- 设置主服务器的配置
bind 192.168.1.10
- 设置从服务器的配置
- 注意:在slaveof后面写主机ip,再写端口,而且端口必须写
bind 192.168.1.11
slaveof 192.168.1.10
- 在master和slave分别执行info命令,查看输出信息
- 在master上写数据
set hello world
- 在slave上读数据
get hello
安装包
- 到中文官网查找客户端代码
- 联网安装
sudo pip install redis
- 使用源码安装
unzip redis-py-master.zip
cd redis-py-master
sudo python setup.py install
交互代码
- 引入模块
import redis
- 连接
try:
r=redis.StrictRedis(host='localhost',port=)
except Exception,e:
print e.message
- 方式一:根据数据类型的不同,调用相应的方法,完成读写
- 更多方法同前面学的命令
r.set('name','hello')
r.get('name')
- 方式二:pipline
- 缓冲多条命令,然后一次性执行,减少服务器-客户端之间TCP数据库包,从而提高效率
pipe = r.pipeline()
pipe.set('name', 'world')
pipe.get('name')
pipe.execute()
封装
- 连接redis服务器部分是一致的
- 这里将string类型的读写进行封装
import redis
class RedisHelper():
def __init__(self,host='localhost',port=):
self.__redis = redis.StrictRedis(host, port)
def get(self,key):
if self.__redis.exists(key):
return self.__redis.get(key)
else:
return ""
def set(self,key,value):
self.__redis.set(key,value)
示例:用户登录
- 业务过程如下:
- 输入用户名、密码
- 密码加密
- 判断redis中是否记录了用户名,如果有则成功
- 如果redis中没有用户名,则到mysql中查询
- 从mysql中查询成功后,将用户名记录到redis中
#coding=utf-
from t2 import RedisHelper
from t3 import MysqlHelper
import hashlib name=raw_input("请输入用户名:")
pwd=raw_input("请输入密码:") sha1=hashlib.sha1()
sha1.update(pwd)
pwd1=sha1.hexdigest() try:
redis=RedisHelper()
if redis.get('uname')==name:
print 'ok'
else:
mysql=MysqlHelper('localhost',,'test1','root','mysql')
upwd=mysql.get_one('select upwd from userinfos where uname=%s',[name])
if upwd==None:
print '用户名错误'
elif upwd[]==pwd1:
redis.set('uname', name)
print '登录成功'
else:
print "密码错误"
except Exception,e:
print e.message
1.buntu 安装redis的更多相关文章
- Ubuntu安装redis并配置远程、密码以及开启php扩展
一.前言 redis是当前流行的nosql数据库,很多网站都用它来做缓存,今天我们来安装并配置下redis 二.安装并配置redis 1.安装redis sudo apt-get install re ...
- CentOS 7 下安装redis步骤
1. 从redis官网下载redis源码,本例安装在/usr/opt下 [root@localhost opt]# pwd /usr/opt [root@localhost opt]# wget ht ...
- 安装redis以windows服务形式
安装redis以windows服务形式 安装redis以windows服务形式 redis windows windows 服务 以前跑redis,老是要开一个命令行窗口,一旦关闭,redis服务就挂 ...
- Mac Pro 编译安装 Redis 的 PHP 客户端 phpredis
1.去官网下载 redis 扩展源码包 https://github.com/phpredis/phpredis 2.安装 redis 扩展 /usr/local/src/mac-sdk/source ...
- 编译安装PHP7并安装Redis扩展Swoole扩展
编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php 使用的, 如果是apache那么 ...
- 【安装Redis】CentOS7 下安装NodeJs+Express+MongoDB+Redis
Redis,V3.2,官网l官方链接:http://www.redis.io/download,参考:http://blog.csdn.net/mlks_2008/article/details/19 ...
- centos7.0 安装redis集群
生产环境下redis基本上都是用的集群,毕竟单机版随时都可能挂掉,风险太大.这里我就来搭建一个基本的redis集群,功能够用但是还需要完善,当然如果有钱可以去阿里云买云数据库Redis版的,那个还是很 ...
- Linux(Centos)之安装Redis及注意事项
1.redis简单说明 a.在前面我简单的说过redis封装成共用类的实现,地址如下:http://www.cnblogs.com/hanyinglong/p/Redis.html. b.redis是 ...
- centos上如何安装redis?|centos傻瓜式安装redis教程
本文介绍centos安装redis,请不要安装2.4.3,是有问题的. 首先安装gcc yum -y install gcc yum -y install gcc-c++ yum install ma ...
随机推荐
- Codeforces 787D. Legacy 线段树建模+最短路
D. Legacy time limit per test:2 seconds memory limit per test:256 megabytes input:standard input out ...
- 生活类App原型制作分享-AnyList
AnyList是一款可以帮你创建购物清单,并且帮助你整理食谱的生活工具App,前面引导页采用图片+文字的方式,介绍App的用法,登录注册采用选项卡切换的方式,减少了页面切换的繁琐操作,在Mockplu ...
- ubuntu14简介/安装/菜鸟使用手册
Linux拥有众多的发行版,可以分为两大类商业版和开源社区免费版.商业版以Radhat为代表,开源社区版以debian为代表. 简单的比较ubuntu与centos. Ubuntu 优点:丰富的 ...
- springMVC学习三 注解开发环境搭建
第一步:导入jar包 第二步:配置DispatcherServlet 前端控制器 因为此处把DsipatcherServlet的映射路径配置成了"/",代表除了.jsp文件之外, ...
- Linux下安装启动多个Mysql
网上找了N多资料,没有一个可以顺利成功的,郁闷,可能是水平有限吧...!本人经过不断的研究.测试,完整实现Linux下启动两台MySQL,而且对mysql有了更深入的了解...废话不多说,走着! 步骤 ...
- Enjoy Markdown!
有一个神奇的语言,比HTML简单,它巧妙地将内容与格式结合在一起,它就是Markdown! 下面是一个用C语言写的四则运算小测试~ #include <stdio.h> #include ...
- 2019.01.21 bzoj3674: 可持久化并查集加强版(主席树+并查集)
传送门 题意:维护可持久化并查集,支持在某个版本连边,回到某个版本,在某个版本 询问连通性. 思路: 我们用主席树维护并查集fafafa数组,由于要查询历史版本,因此不能够用路径压缩. 可以考虑另外一 ...
- 2019.01.14 codeforces685B. Kay and Snowflake(树形dp)
传送门 题意简述:给出一棵树,求每个子树的重心. 首先通过画图可以观察出一个性质,我们从叶子结点向根节点递推重心的话重心的位置是不会下降的. 然后由于一个点的重心要么是自己,要么在重儿子子树内,因此如 ...
- vi三种模式的切换
基础上vi/vim共分为三种模式,分别是命令模式,输入模式和底线命令模式. 一.命令模式 用户刚刚启动vi/vim,便进入了命令模式. 在此状态下敲击键盘动作会被vim识别为命令,而非输入字符.比如我 ...
- springboot 配置DRUID数据源
druid 是阿里开源的数据库连接池. 开发时整合 druid 数据源过程. 1.修改pom.xml <dependency> <groupId>mysql</gro ...