详细的redis操作介绍

本文介绍了NoSQL数据库的概念及其在高并发场景下的优势,并详细解析了Redis的特点、数据类型、安装部署过程及应用场景。

 

NoSQL介绍

 

Nosql = not onlysql, 09年发展高涨,指非关系型数据库,在超大规模和高并发的sns类网站有优势;

 

Nosql是以key-value形式存储,和传统的数据库不一样;不需要遵守关系型数据库的一些要求,如sql标准,acid属性,表机构等等;

特点:非关系型的,分布式的,开源的,水平可扩展的;

1、处理超大量的数据

2、运行在便宜的PC服务器集群上

3、击碎了性能瓶颈

 

适用场景:

1、对数据高并发读写

2、对海量数据的高效率存储和访问

3、对数据的高可扩展性和高可用性

 

 

Redis介绍

Redis is an opensource, advanced key-value store.It is often referred to as a data structureserver since keys can contain strings,hashes, lists,sets and sorted sets.

Redis 支持存储的value类型包括string/list/set/zset。都支持push/pop,add/remove及交集和并集及更丰富的操作,Redis支持各种不同方式的排序,为了保证效率,数据都是缓存在内存中,但是可以周期性的把更新的数据写到磁盘或者把修改操作写入追加的记录文件。

 

Redis提供的API语言:c c++ c# java js python php ruby Go lua

 

目前全球最大的Redis用户是新浪微博

 

Redis的使用场合

在新浪的2中部署场景:

1、应用程序直接访问Redis数据库

Application---> Redis

 

2、应用程序直接访问Redis,只有当Redis访问失败再访问Mysql。

Redis数据库提供多种灵活的数据结构和数据操。

 

A、去最新的N个数据操作

B、排行应用,去TOP N操作

C、需要精确设定过期时间的应用

D、计数器应用

E、Uniq操作,获取排重数据

F、实时系统,反垃圾

G、Pub/Sub构建实时消息系统

H、构建队列系统

I、缓存

 

Redis 和 mysql的区别

 

redis

mysql

mongodb

数据库

表结构

集合

字段

 

Redis的安装与部署

1、下载安装包

2、编译安装

Make

Cd src & make install

配置项

 

启动

Redis的后台启动

使用redis.conf配置文件,把daemonize改成yes;daemonize表示后台启动。

 

redis-server /usr/local/redis/etc/redis.conf  -- 启动redis服务

./redis-cli  -- 启动客户端

 

关闭redis服务

1、pkillredis-server

2、./redis-clishutdown

 

 

点击redis-server.exe文件启动服务,不用关闭该窗口

 

Redis数据类型

strings类型及操作

A、Set

设置key对应的值为string类型的value

 

B、Setnx

 

C、Setex

 

D、Setrange

E、Mset

 

F、Msetnx

如果有一个键未设置成功,则都不成功;

G、Get

H、Getset

I、Getrange

J、Mget

 

K、Incr

L、Decr

M、Append

N、Strlen

hashes类型

Redis hash 是一个string类型的field和value的映射表,他的添加、删除操作都是o(1)。Hash特别适合存储对象。相较于将对象的每个字段存成单个string类型,将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

 

Hset和hget

 

 

Hsetnx

 

Hmset

Hget

 

Hmget

Hincr

 

Hexists

Hlen

Hdel

Hkeys


hvals

Hgetall

Lists类型

List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字,redis的list类型其实就是一个每个子元素都是string类型的双向链表。可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以做栈也可以做队列。

 

Lpush

Rpush

Linsert

Lset

Lrem

Ltrim

Lpop

rpoplpush

lindex

Llen

 

Sets类型

Sadd

查看所有set成员使用 smembers

srem

Spop

Sdiff

sdiffstore

sinter

 

Sinterstore

Sunion

Sunionstore

 

smove

Scard

Sismember

srandmember

 

有序集合sorted set

Zadd

Zrem

Zincrby

 

Zrank

 

Zrevrank

Zrevrange

 

Zrangebyscore

 

Zcount

Zcard

 

Zremrangebyrank

安索引删除

 

Zremrangebyscore

按顺序号删除

 

Redis常用命令

键值相关命令

1、Keys

2、Exists

3、Del

4、Expire

5、Move

6、Persist

7、Randomkey

8、Rename

9、Type

 

服务器相关命令

1、Ping

2、Echo

3、Select

4、Quit

5、Dbsize

6、Info

7、Config get

8、Flushdb

9、Flushall

 

Redis的高级应用

安全性

设置密码:

修改配置文件redis.conf

requirepass hello

如下截1图

设置完成后,重启redis

 

每次进入时使用密码进入,#> redis-cli -a 密码

主从复制

事务处理

 

持久化机制

1、Snapshoting方式

 

2、aof方式

发布订阅消息

 

 

虚拟内存的使用

 

 

Php使用redis

https://github.com/phpredis/phpredis  php redis

 

API

 

示例代码:

 

 

Python使用redis

https://github.com/andymccurdy/redis-py

 

Redis-py介绍

The Pythoninterface to the Redis key-value store.

 

1、Installation

 

redis-pyrequires a running Redis server.

To installredis-py ,

$> sudo pipinstall redis

 

Or

 

$> sudoeasy_install redis

 

API: http://redis-py.readthedocs.org/en/latest/

 

2、简单使用

 

3、 

 

Java使用redis

    https://github.com/xetorthio/jedis

 

 

Redis所有命令

http://redis-py.readthedocs.org/en/latest/

 

Strings

 

Redis管道

请求/响应协议和RTT

Redis是一个使用客户端/服务器模型(也被称作请求/响应协议)的TCP服务器。

这说明通常来讲一个一个请求的实现有以下步骤:

·  客户端发送请求到服务器,并从socket中以堵塞的方式读取服务器的响应数据。

服务器对发动的命令进行处理并把响应数据发回客户端。

比如发送连续四个命令就会像这样:

  • 客户端: INCR X
  • 服务端: 1
  • 客户端: INCR X
  • 服务端: 2
  • 客户端: INCR X
  • 服务端: 3
  • 客户端: INCR X
  • 服务端: 4

客户端和服务端通过网络连接。这个连接可能非常快(本地回环接口)也可能非常慢(互联网上相隔很多跳数的两台主机)。不论网络延迟是多少,数据包从客户端发到服务端并从服务端返回客户端都有一个时间。

这个时间被称作环路时间。显而易见,当客户端需要一次发送很多请求时(比如一次向一个List添加很多元素,或者向一个数据库添加很多Key),这个环路时间会对性能造成非常大的影响。如果环路时间是250毫秒(在网络连接非常慢的情况下),即使服务端能每秒处理10万个请求,我们一秒最大也只能处理四个请求。

即使我们用的是本地回环接口,本地环路时间会短得多(比如在我本机上用ping测试是0.044毫秒),但是如果你要一次进行大量写操作,这个时间依然不少。

幸运的是我们有一种方法来优化这种使用场景。

Keys *  查看所有的key值, type $key 查看某个key的类型;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值