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. 用C#生成不反复的随机数

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xiebaochun/article/details/28900237 对于随机数,大家都知道,计算机 ...

  2. delete在js里为引用删除

    delete 运算符从对象中删除一个属性,或从数组中删除一个元素. delete expressionexpression 参数是一个有效的 JScript 表达式,通常是一个属性名或数组元素. 说明 ...

  3. HTML中什么时候加px

    如:<img width="800" height="600" src="#"/> 不加后面的px;  #center{     ...

  4. .NET中Ajax跨越访问

    说明:我们知道Ajax是不能进行跨域请求的,我们是可以设置我们的项目让Ajax支持跨域访问. 跨域: aa.xxx.com 中用ajax请求  bb.ccc.com中的数据成为跨域. 找了一些文章看了 ...

  5. Progress

    这个标签用来表示进度,常用来表示下载的进度. <progress value="22" max="100"></progress>   ...

  6. sql字段为datetime,插入''的时候默认为1900年

    Microsoft SQL Server Database Engine 用两个 4 字节的整数内部存储 datetime 数据类型的值. 第一个 4 字节存储“基础日期”(即 1900 年 1 月  ...

  7. socket手写一个简单的web服务端

    直接进入正题吧,下面的代码都是我在pycharm中写好,再粘贴上来的 import socket server = socket.socket() server.bind(('127.0.0.1', ...

  8. 内存分配---FF、BF、WF三种算法

    动态分区分配是根据进程的实际需要,动态的为之分配内存空间.而在实现可变分区分配时,将涉及到分区分配中 所用的数据结构.分区分配算法和分区的分配与内存回收的过程. 分区分配中的数据结构:(1)描述空闲块 ...

  9. QString, Std::string, char *相互转换

    Qt 库中对字符串类型进行了封装,QString 类提供了所有字符串操作方法,给开发带来了便利. 由于第三方库的类型基本上都是标准的类型,即使用std::string或char *来表示字符 (串) ...

  10. Flask之endpoint错误View function mapping is overwriting an existing endpoint function: ***

    最近在学习Flask, 其中遇到了一个错误, 发现这个问题和Flask, 路由有关系, 所以就记了下来 错误代码: from flask import Flask, render_template, ...