Linux下安装redis

1、下载源码,解压缩后编译源码

$ wget http://download.redis.io/releases/redis-2.8.3.tar.gz

$ tar xzf redis-2.8.3.tar.gz

$ cd redis-2.8.3

$ make  make install

 2、编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf。然后拷贝到一个目录下

mkdir /usr/redis

cp redis-server  /usr/redis

cp redis-benchmark /usr/redis

cp redis-cli  /usr/redis

cp redis.conf  /usr/redis

cd /usr/redis

3、启动Redis服务。

$ redis-server   redis.conf

4、然后用客户端测试一下是否启动成功。

$ redis-cli

redis> set foo bar

OK

redis> get foo

"bar"

redis操作

string数据类型

set name zhilei

get name

setnx   #如果key不存在则设置,如果存在,则返回0

setex  name 10 zhilei  #声明一个变量,且加上超时时间

set email  wangzhilei@jd.com #对于这个声明好的变量进行部分内容进行更改

setrange  email 3 wulong@jd.com

get email

wangwulongok@jd.com

mset name zhilei age 10  #批量的赋值

msetnx  #批量设置,如果有一个key存在的话,则返回0

mget name age  #批量的取值

incr age #让一个值递增1

incrby age 10  #让一个值递增固定的值

decr age #让一个值递减

decrby age 100 #让一个值递减固定的值

getset name  yinchao #重新给一个变量赋值,但是返回原来的变量的值

getrange email 0 6  #返回一个字符串的部分内容

append name aa #给一个key加入相关的内容

strlen name    #获取一个key的值的长度

hashes 类型

hset      #设置

hsetnx    #如果不存在的话,则设置

hget      #获取

hmset     #批量赋值

hmget     #批量获取

hlen      #显示字段的个数

hincrby   #递增

hexists   #判断hashed key是否存在 如果存在的话,则返回1,如果不存在的话,则返回0

hkeys     #返回hashed下面所有的字段

hvals     #返回hashes对象下面所有的值

hgetall   #key val 一起获取

hdel      #删除hash对象下面某个key的某个字段

list类型

栈存入

lpush list1  zhilei 10   #向栈里面加入两个值

lrange list1 0 -1       #取这个栈内的数据

队列存入

rpush

Linsert list1 before “one” “two”  #插入

Lset                          #将一个值修改

Lrem                         #删除队列中几个相内的内容

Ltrim                         #删除非指定key范围内的值 ,其它的都删除

Lpop                         #从list从头弹出一个元素

Rpop                         #从尾部弹出

Rpoplpush                    #将一个链表的尾部的元素弹出,赋给第二个链表的头部

Lindex                        #按索引来取值

Sets与zset类型 (集合数据类型)  注意:集合内部不能有重复的值

特点:无序

方法

Sadd  name zhilei   #给name集合设置值

Smembers name     #取name集全下面所有的值

Srem   name zhieli  #删除name集合下面的zhilei

Spop   name       #随机的弹出一个值,(删除弹出的值)

Sdiff   set1 set2             #两个集合的差集

Sdiffstore  set3 set1 set2     #将前两个集合差集存到set3中

Sinter   set1 set2           #取两个集合的交集

Sinterstore    set1 set2 set3  #将后面的两个集合的交集存话到set1中

Sunion     set1  set2       #取两个集合的并集

Sunionstore  set3 set1 set2   #两set1 set2两个并集到set3中

Smove  set1 set2  name    #将第一个集合内的一个值放到set2中

Scard                       #查看集合内元素的个数

Sismember    set1 one              #判断一个元素是否为一个集合的元素

Srandmember    set1            #随机取一个元素,但不删除元素

有序集合 stored sets

Zadd   #添加元素  例:Zadd  class 1 one

Zrange class 0 -1 withscores   #取值(withscores将排行号给取出来 )

Zrem class one         #删除一个元素,返回1的话 则代表删除成功

Zincrby                #给指定的顺序增加 例子:zincrby zsets  3 one   将集合zsets 中元素one的排序加上3

Zrank                  #按score排序列从小到大排序 ,并返回一个元素的索引      这个是按score的升序来排序

Zrevrank               #按排序列从大到小排序 ,并返回一个元素的索引            这个是按score的降序来排序

Zrevrange              #倒序,然后取索引范围  withscores 加上排序值   也就是说这个是按索引来倒过来排序

Zrangebyscore         #按排序范围值来取

Zcount                #返回区间内空的个数  也是按score来取个数

Zcard                         #返回集合中所有的元素的个数

Zremrangebyrank   set1 0 1  #按索引来删除

Zremrangebyscore  #set 0 2  #按排序来删除

Redis常用命令

Keys *  输出所有的键

Exists   #判断一个键是否存在

Del    #删除一个键

Expire  #设置一个键的过期时间

Ttl      #查看一个key的过期时间

Move  age 1   #将一个数据库的key age 剪切到1数据库

Persist age      #取消过期

Randomkey      #随机返回一个key

Rename         #给一个key重命名

Type            #返回key的数据类型

服务器相关的命令

Ping

Echo

Select  0-15  共15个数据库

Quit 或者是 exit

Dbsize     #返回当前数据中key总量

Info       #获取服务器的信息

Config get  #实时传储收到请求

Flushdb    #删除当前数据库所有库

Flushall    #删除所有数据库的所有key

Redis高级应用

  1. 1.   安全性
  2. 2.   主从复制
  3. 3.   事务处理
  4. 4.   持久化机制
  5. 5.   发布订单消息
  6. 6.   虚拟内存的使用

安全性:

在配置文件中 修改requirepass 后面直接是redis密码

Auth passwd 来登录进去 或者是登录时候 用  -a 密码

主从复制:

  1. 在从机配置slaveof
  2. 配置masterauth
  3. 判断哪个是主 哪个是从只要命令info

Redis事务处理

Multi

中间是事务的内容

如果想回滚discard

Exec

乐观锁

用watch来监控一个key,并执行事务,这个时候,如果有另外的一个session来改变这个key值,则这个key版本的值已经不是最新的了,这样的话,则事务则不会执行成功

相当于svn 与givhub  如果服务器上面的版本为4 如果将上传的版本改为3,则不能上传成功,必须为4以上的版本

例:

Session1:

127.0.0.1:6379> get name

"aaaaaa"

127.0.0.1:6379> WATCH name

OK

127.0.0.1:6379> multi

OK

127.0.0.1:6379> set name zongbin

QUEUED

127.0.0.1:6379> exec

(nil)

Session 2:

Set name newword

Redis持久化机制

两种方式:

Snapshotting 快照 相当于mysqldump

Append-only file 缩写aof的方式 给操作进行备份 相当于mysql中的bin-log日志

消息发布与订阅

Session1发布如下Publish  message1  hello

Session2 订阅如下Subscribe message

虚拟内存  2.6之后就弃用了

              

php-redis扩展安装方法

PHP 使用 Redis

安装

开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动:下载地址为:https://github.com/phpredis/phpredis/releases。

PHP安装redis扩展

以下操作需要在下载的 phpredis 目录中完成:

$ wget https://github.com/phpredis/phpredis/archive/2.2.4.tar.gz

$ cd phpredis-2.2.7                      # 进入 phpredis 目录

$ /usr/local/php/bin/phpize              # php安装后的路径

$ ./configure --with-php-config=/usr/local/php/bin/php-config

$ make && make install

如果你是 PHP7 版本,则需要下载指定分支:

git clone -b php7 https://github.com/phpredis/phpredis.git

修改php.ini文件

vi /usr/local/php/lib/php.ini

增加如下内容:

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626"

extension=redis.so

安装完成后重启php-fpm 或 apache。查看phpinfo信息,就能看到redis扩展。

PHP 使用 Redis

连接到 redis 服务

<?php

//连接本地的 Redis 服务

$redis = new Redis();

$redis->connect('127.0.0.1', 6379);

echo "Connection to server sucessfully";

//查看服务是否运行

echo "Server is running: " . $redis->ping();

?>

执行脚本,输出结果为:

Connection to server sucessfully

Server is running: PONG

Redis PHP String(字符串) 实例

<?php

//连接本地的 Redis 服务

$redis = new Redis();

$redis->connect('127.0.0.1', 6379);

echo "Connection to server sucessfully";

//设置 redis 字符串数据

$redis->set("tutorial-name", "Redis tutorial");

// 获取存储的数据并输出

echo "Stored string in redis:: " . $redis->get("tutorial-name");

?>

执行脚本,输出结果为:

Connection to server sucessfully

Stored string in redis:: Redis tutorial

Redis PHP List(列表) 实例

<?php

//连接本地的 Redis 服务

$redis = new Redis();

$redis->connect('127.0.0.1', 6379);

echo "Connection to server sucessfully";

//存储数据到列表中

$redis->lpush("tutorial-list", "Redis");

$redis->lpush("tutorial-list", "Mongodb");

$redis->lpush("tutorial-list", "Mysql");

// 获取存储的数据并输出

$arList = $redis->lrange("tutorial-list", 0 ,5);

echo "Stored string in redis";

print_r($arList);

?>

执行脚本,输出结果为:

Connection to server sucessfully

Stored string in redis

Redis

Mongodb

Mysql

Redis PHP Keys 实例

<?php

//连接本地的 Redis 服务

$redis = new Redis();

$redis->connect('127.0.0.1', 6379);

echo "Connection to server sucessfully";

// 获取数据并输出

$arList = $redis->keys("*");

echo "Stored keys in redis:: ";

print_r($arList);

?>

执行脚本,输出结果为:

Connection to server sucessfully

Stored string in redis::

tutorial-name

tutorial-list

听雷哥浅谈Redis的更多相关文章

  1. $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )

    $.ajax()方法详解   jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...

  2. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  3. 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )

    很多小伙伴没接触过Redis,以至于去学习的时候感觉云里雾里的,就有一种:教程随你出,懂了算我输的感觉. 每次听圈内人在谈论的时候总是插不上话,小编就偷偷去了解了一下,也算是初入门径. 然后就整理了一 ...

  4. 浅谈Redis面试热点之工程架构篇[1]

    前言 前面用两篇文章大致介绍了Redis热点面试中的底层实现相关的问题,感兴趣的可以回顾一下:[决战西二旗]|Redis面试热点之底层实现篇[决战西二旗]|Redis面试热点之底层实现篇(续) 接下来 ...

  5. 浅谈Redis未授权访问漏洞

    Redis未授权访问漏洞 Redis是一种key-value键值对的非关系型数据库 默认情况下绑定在127.0.0.1:6379,在没有进行采用相关的策略,如添加防火墙规则避免其他非信任来源ip访问等 ...

  6. 浅谈redis和memcached的区别

    缓存技术方面说到redis大家必然会联想到memcached,了解它们的人应该都知道以下几点吧 redis与 memcached相比,redis支持key-value数据类型,同事支持list.set ...

  7. 浅谈Redis数据库的键值设计(转)

    丰富的数据结构使得redis的设计非常的有趣.不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与.redis的DBA需要熟悉 ...

  8. 浅谈Redis及其安装配置

    一.Redis的介绍 二.Redis的安装配置 三.Redis的配置文件说明 四.Redis的简单操作 简介: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型. ...

  9. 浅谈redis的HyperLogLog与布隆过滤器

    首先,HyperLogLog与布隆过滤器都是针对大数据统计存储应用场景下的知名算法. HyperLogLog是在大数据的情况下关于数据基数的空间复杂度优化实现,布隆过滤器是在大数据情况下关于检索一个元 ...

随机推荐

  1. 设计模式——策略模式(Strategy Pattern)

    写在前面: 直接将书中的例子用来作为记录自己学习的成果,不知道这样好不好,如果给原作者带来什么不利的影响不妨告知一声,我及时删掉. UML图: 抽象策略:Strategy package com.cn ...

  2. Python语言程序设计基础(4)—— 程序的控制结构

    PM2.5 pm = eval(input()) if pm>=75: print("空气存在污染") else : print("空气没有污染") pr ...

  3. 【转】同步的HttpClient使用详解

    http://blog.csdn.net/angjunqiang/article/details/54340398 背景 服务端以及客户端在开发过程中不可避免的会使用到网络请求,网络请求可以使用Jav ...

  4. 线段tree~讲解+例题

    最近学习了线段树这一重要的数据结构,有些许感触.所以写一篇博客来解释一下线段树,既是对自己学习成果的检验,也希望可以给刚入门线段树的同学们一点点建议. 首先声明一点,本人是个蒟蒻,如果在博客中有什么不 ...

  5. spring入门(七) spring mvc+mybatis+generator

    1.Mybatis-Generator下载 地址:https://github.com/mybatis/generator/releases 我使用的是 mybatis-generator-core- ...

  6. WebSocket 和socket 的区别

    去年光棍节的时候,我写过一篇 quick-cocos2d-x 中的 socket 技术选择:LuaSocket 和 WebSocket .这篇文章介绍了我为何决定在项目中使用 LuaSocket . ...

  7. jquery mobile 移动web(5)

    有序列表 <div data-role="content"> <ol data-role="listview" data-theme=&quo ...

  8. C / C ++ 基于梯度下降法的线性回归法(适用于机器学习)

    写在前面的话: 在第一学期做项目的时候用到过相应的知识,觉得挺有趣的,就记录整理了下来,基于C/C++语言 原贴地址:https://helloacm.com/cc-linear-regression ...

  9. 【模板】概率dp

    有n个投资事件,和一个成功概率最低接受值rate.每个投资的价值是c[i],成功概率是p[i](浮点数). 在保证成功概率≥rate的情况下,使价值最大化. #include<bits/stdc ...

  10. 2822: [AHOI2012]树屋阶梯

    Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1161  Solved: 694[Submit][Status][Discuss] Descriptio ...