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. SAP+DB2 糟糕的报表查询『ZCOR0015』 优化全程记录

    ZCOR0015的优化全过程记录文档 2015年3月,今天无意翻到这篇写于2010年7月的文档,回想那时的工作,毕业3年初出茅庐的我面对接触不多的SAP+DB2竟敢操刀动斧,自信满满. 虽然这过程一路 ...

  2. sublime text3 英文版转为中文版

    第一步设置好:https://packagecontrol.io/installation#st3 简单几步 : 1. 点击菜单栏中“preferences”,弹出选项中找到“package cont ...

  3. IOS 即时通讯的框架 配置环境

    一.了解XMPP 协议(标准)XMPP 即时通讯协议SGIP 短信网关协议 这手机发短信 移动支付和网页支付 0x23232[0,1] 0x23232 0x23232 0x23232 只有协议,必须会 ...

  4. 【转】eclipse 错误信息 "File Search" has encounter a problem 解决

    在eclipse中使用搜索功能,发生错误: "File Search" has encounter a problem 仔细看了一下自动跳出的错误日志(Error Log),发现: ...

  5. Ubuntu 16.04 源码方式安装 JDK

    1.去官网下载JDK http://www.oracle.com/technetwork/articles/javase/index-jsp-138363.html 2.下载完成后,创建一个我们将要安 ...

  6. Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  7. 简单的使用git克隆上传创建下载删除

    首先我们下载个git 官网:https://git-scm.com/ 我这里下的是64-bit windows setup 下载完成后安装: 一直下一步就好 安装完成后进行打开! 现在我们需要去官网注 ...

  8. Spring Boot应用的测试——Mockito

    Spring Boot应用的测试——Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试:Spring ...

  9. 菜鸟崛起 DB Chapter 3 MySQL 5.6的基本操作

    3   MySQL的基本操作 上面我们学习一如何安装数据库,那么这节我们来认识一下数据库: 我们在MySQL安装后,在data目录下会自动生成几个必须的数据库,可以使用SHOW DATABASES语句 ...

  10. MySQL数据库主从(主主)配置

    一.系统环境: centos7.4 (centos 1708) mysql 5.7 master主机的IP地址为192.168.159.50 slave主机的IP地址为192.168.159.51 M ...