Full Manual Redis Detailed tutorial

Source: Internet
Author: User
Tags gz file redis server

Redis cache servers in Linux

First, the basic part of Redis:

1, Redis introduction and installation than MySQL faster than 10 times times

Applications for Redis ****************

1. Take the latest N data operation

2. Leaderboard application, top N operation

3. Applications that need to set the expiration time accurately

4. Counter Application

5.Uniq operation to get all data rows for a certain period of time

6. Real-time system, anti-spam System 7. Pub/sub Building a real-time messaging system

7.pub/sub Building a real-time messaging system 8. Building a queue system

9. Caching

=============================================

Set operations 110,000 times per second, get operations 81,000 times per second, the server is configured as follows:

Linux 2.6, Xeon X3320 2.5Ghz.

The StackOverflow website uses Redis as a cache server.

The data is also written to the hard disk. So the data is safe (except for sudden power outages, the restart service will be written to the Dump.rdb file)

********************************************************************

The latest stable version is: 2.4.17.tar.gz, redis-2.6.10.tar.gz

wget http://redis.googlecode.com/files/redis-2.4.17.tar.gz

PHP Module: owlient-phpredis-2.1.1-1-g90ecd17.tar.gz

1. Installation:

Tar zxvf redis-2.4.17.tar.gz

CD redis-2.4.17

Make

CD src && make install

2. Move the profile location (for ease of administration)

cd/usr/local/

Mkdir-p/usr/local/redis/bin

Mkdir-p/usr/local/redis/etc

Mv/lamp/redis-2.4.17/redis.conf/usr/local/redis/etc

Cd/lamp/redis-2.4.17/src

MV mkreleasehdr.sh Redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server/usr/local/redis/bin

3. Modify the configuration file

Vi/usr/local/redis/etc/redis.conf

First, the Daemonize No to Yes[yes refers to the background run]

4. Start/random start:

Cd/usr/local/redis/bin

./redis-server/usr/local/redis/etc/redis.conf# start Redis and specify the configuration file.

#vi/etc/rc.local #设置随机启动.

/usr/local/redis/bin/redis-server/usr/local/redis/etc/redis.conf

5. See if the startup is successful

Ps-ef | grep Redis

NETSTAT-TUNPL | grep 6379# to see if the port is occupied.

6. Enter the client/exit

Cd/usr/local/redis/bin

./redis-cli# Enter

quit# exit

7. Turn off Redis

Pkill redis-server# off

./REDIS-CLI shutdown# Close

Redis Security ************************************

Security??? for Redis (By the following 4 ways)

1. Use ACL controller security.

2. Add the following line configuration to the redis.conf configuration file to bind Redis to a single interface (but not only the data that accepts the NIC).

Bind 127.0.0.1

3. Add a longer password to Redis (no need to remember)

4. Enable the authentication feature in the redis.conf configuration.

5.SSL Proxy

6. Disable the specified command.

Redis Configuration **********************************************

Daemonize If you need to run in the background, change the item to Yes

Pidfile configure multiple PID addresses by default in/var/run/redis.pid

Bind bind IP, set only to accept requests from that IP

Port Listener, default = 6379

Timeout setting time-out for client connections in seconds

LogLevel is divided into 4 levels, debug, verbose, notice, warning

LogFile Configuring the log file address

Databases set the number of databases, the default database used is 0

Save sets how often Redis makes database mirroring

Rdbcompression whether to compress during a mirrored backup

Dbfilename file name for image backup

Dir file placement path for database mirroring backup

Slaveof setting the database to a different database from the database

Masterauth password verification required for primary database connection

Requirepass setting the password to use when logging in

MaxClients limit the number of simultaneous customers

MaxMemory set the maximum memory that Redis can use

AppendOnly Open Append Only mode

Here's what you can do:

Appendfsync Setting the frequency of synchronization for appendonly.aof files

Vm-enabled whether to turn on virtual memory support

Vm-swap-file setting the swap file path for virtual memory

Vm-max-memory Setting the maximum physical memory size used by Redis

Vm-page-size setting the page size for virtual memory

Vm-pages set the total page number of the interchange file

Vm-max-threads setting the number of simultaneous threads used by VM IO

GLUEOUTPUTBUF Store small output caches together

Hash-max-zipmap-entries setting the critical value of a hash

Activerehashing re-hash

*******************************************************************

5 Types of data: string, hash, linked list, collection, ordered collection.

Support: Push/pop, Add/remove, take intersection, set, difference set, sort.

redis<=== Synchronous ====>mysql

The data is also written to the hard disk. So the data is safe (except for sudden power outages, the restart service will be written to the Dump.rdb file)

*******************************************************************

Select num# Library, default in 0 libraries, total 16 libraries

Auth liweijie# the required password for authorized users (password is the password configured in redis.conf)

flushdb# clears the database.

String (String) type:

Set name lijie# The value of the key name is Lijie

Get name# Gets the value of name.

Keys * #查询所有的键.

Setnx name liweijie# returns 0 if the key already exists, and does not update to prevent overwriting.

Setex haircolor Red #设置键的值的有效期为10秒.

SetRange Email 6 lampbre.com# The value of the replacement key starts with the 6th character and changes to lampbre.com

Mset name1 li Dawei name2 Li Xiaowei # Sets the value of multiple keys.

Msetnxname1 Zhang San name3 John Doe # determines if the key exists, does not exist, or does not set to return 0

Mget name1 name2 name3# Gets the value of more than one key at a time.

Getset name1 tom# Re-sets the value of the key and returns the old key value.

GetRange Email 6 18# Intercept the value of the email key, from the 第6-18位 between the characters.

INCR uid# 1 per increment (if the UID in key does not exist, set and start at 0, same as below)

Incrby uid AA 5 per increment

Incrby uid-5# 5 per self-reduction

DECR UID #每次自减1

Decrby UID AA 5 per self-decrement

Appendname1 @126.com# to Name1 value, add string @126.com

strlenname1# returns the length of the value of the key name1.

*************************************************************************

Hashes (hash) type:

Hset user:001 name liweijie# Hash set user user:001 name key value is Liweijie

Hset user:001 Age 21# Also, add an age key value of 21

Hsetnx user:001 Age 22# Ibid, but the detection key is present. If no creation exists.

Hmset user:002 name Liweijie2 age of Sex # Sets the value of multiple keys at the same time.

Hget user:001 name# Hash Gets the value of the user user:001 name key.

Hget user:001 age #同上.

Hmget user:001 name Age sex# gets multiple values for the specified key.

Hgetall user:001# Gets the value of all keys.

hincrbyuser:001 age-8# adds the given value to the specified key.

Hexists user:001 sex# detects whether the specified key value exists.

Hlen user:001# Returns the number of keys/fields for the specified hash.

Hdel user:001 sex# Deletes the specified field or key value of the specified (user:001) hash.

Hkeys user:003# returns hash all fields or key values.

*********************************************************************

Lists (list) type and operation (in the case or queue):

Lpush mylist "World" #从头部插入字符串

Lpush mylist "Hello" #同上

Lrange mylist 0-1# gets from 0 to the last one such as [1] "Hello" 2) "World"

Rpush mylist "Jiejie" #在尾部插入

Linsert mylist before "Hello" "This is Linsert" #指定插入位置 (inserted before Hello).

LSet mylist 0 "what" #设置修改指定下标的值.

Lrem mylist 1 "Hello" #删除 (1) An element with a value of hello. (n<0 removed from tail, n=0 all removed)

LTrim mylist 1 2 #保留表中下标为1/2 elements.

Lpop mylist# pops up the opening element and returns.

Rpop mylist# pops up the trailing element and returns.

Rpoplpush mylist mylist2 #从mylist尾部弹出插入到mylist2的头部.

Lindex mylist 0# Gets the element value under the table labeled 0.

Llen mylist# Returns the number of table elements (equivalent to count ($arr)).

*********************************************************************

Sets (collection) type and operation (friend referral, blog, tag function):

Smembers myset# View all the element values in the MySet collection.

Sadd myset "Hello" #向mysets集合中添加一个值hello

Srem myset "Hello" #删除myset集合中名称为hello的元素.

Spop MySet #随机弹出并返回mysets中的一个元素.

Sdiff Myset2 myset3# Returns the difference from Myset3 in Myset2 (whichever is myset2).

Sdiffstore Myset4 Myset2 myset3# Returns the difference set in Myset2 with Myset3 and deposits it in Myset4.

Sinter Myset2 myset3# Returns the intersection of Myset2 and Myset3.

Sinterstore Myset5 Myset2 myset3# returns the intersection of Myset2 and myset3 and deposits it in Myset5.

Sunion Myset2 myset3# Seek and set (repeat)

Sunionstore Myset6 Myset2 myset3# Seek and set, and deposit into the MYSET6.

Smove Myset2 Myset3 "three" #将myset2中的three移到myset3中去.

SCard myset2# Returns the number of elements.

Sismember Myset2 "One" #判断元素one是不是myset2集合的 (equivalent to Is_array ()).

Srandmember myset2# randomly returns an element in the Myset2 collection, but does not delete (equivalent to Array_rand ()).

*********************************************************************

Sorted sets (ordered collection) types and operations (sorted in scores):

Zadd Myzset 1 "one" #向顺序1的添加元素one

Zadd myzset 2 "#同上".

Zadd Myzset 3 "#相当于更新顺序为2的值

Zrange Myzset 0-1 withscores# See all the elements and take the sort (by default ascending).

Zrem Myzset "The other" #删除two

Zincrby Myzset 2 "#将two的顺序值加上2

Zrank myzset "#返回集合中元素的索引下标值".

Zrevrank Myzset two# element reverses and returns the new subscript value.

Zrevrange myzset 0-1 withscores# in reverse order (equivalent to descending sort)

Zrangebyscore Myzset 1 withscores# Returns the element with the order 1-10 (can be paged).

Zcount Myzset 1 The number of elements between #返回顺序在1-10.

Zcard myzset# Returns the number of all elements in the collection.

Zremrangebyrank Myzset 1 * Delete the elements in the collection labeled 1 to 2.

Zremrangebyscore Myzset 1 10# deletes the elements in the collection that are sequentially 1 through 10.

Redis Common Commands

Key/value related commands.

Keys * #查询所有

Keys user* #查询指定的

exists user:001# to determine whether it exists.

Del name# deletes the specified key.

Expire addr 10# Set expiration time

TTL addr# Query Expiration Time

Select 0 #选择数据库

Move Age # Moves age to the 1 database.

Get Age #获取

Persist age# the expiration time of age is removed.

randomkey# randomly returns a key

Rename name1 name2# Rename key

Type myset# returns the kind of the key.

Ping #测试redis连接是否存活.

echo lamp# output a lamp

Select 10# Choose a database.

Quit/exit/crtl+c# exiting the Client

dbsize# returns the number of keys in the library.

Server-related commands:

info# displays information about the Redis server.

Config get */loglevel #返回所有/specified configuration information.

flushdb# Delete all keys/tables in the current library.

flushall# Delete all keys/tables in all databases

Second, the Redis Advanced section:

1. Redis Security:

1. Use ACL controller security.

2. Add a longer password to Redis

# Requirepass Foobared

Requirepass Beijing

3. Enable the authentication feature in the redis.conf configuration.

Way one: Auth Beijing

Way two:./redis-cli-a Beijing

4. Add the following line configuration to the redis.conf configuration file to bind Redis to a single interface (but not only the data that accepts the NIC).

Bind 127.0.0.1 (can be configured on a single machine, preferably not configured when distributed or master-slave replication)

5.SSL Proxy

6. Disable the specified command.

2. Redis Master-slave replication:

Redis can only be configured on the slave server (slave):

slaveof 211.122.11.11 6379 #指定master IP and port

Masterauth beijing# This is the master host's password

info# View the status of the primary/slave server.

3. Redis Transaction Processing:

Redis transactions are not perfect.

4. Redis Persistence mechanism:

1. Two ways: One, backup data to disk (snapshot) [Snapshotting (snapshot) is also the default mode]

Second, the record Operation command [Append-only file (abbreviated AOF) way]

One, backup data to disk (snapshot) [Snapshotting (snapshot) is also the default mode]

Save 1 #900秒内如果超过1个key被修改 to initiate a snapshot save

Save #300秒内容如超过10个key被修改, the snapshot save is initiated

Save 60 10000

Second, the record Operation command [Append-only file (abbreviated AOF) way] (more secure persistence)

AppendOnly Yes #启用aof persistence mode

# Appendfsync always//write commands are immediately written to disk, slowest, but guaranteed to be fully persisted

Appendfsync everysec//write disk once per second, a good compromise in performance and persistence

# Appendfsync no//completely dependent on OS, best performance, no guarantee of persistence

Third, PHP + Redis combination

1. Upload module: owlient-phpredis-2.1.1-1-g90ecd17.tar.gz file

Unzip the tar zxf owlient-phpredis-2.1.1-1-g90ecd17.tar.gz

Cd owlient-phpredis-g90ecd17/

/usr/local/php/bin/phpize# Execute Build Configure file

./configure--with-php-config=/usr/local/php/bin/php-config# Configuration compilation

Make && make install

2. Modify the php.ini file to add the following:

Extension=redis.so

Restart the Apache server.

3.PHP Connecting a Redis server

<? Php

$redis = new Redis ();

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

?>


This article is from the "Dream to Reality" blog, please be sure to keep this source http://lookingdream.blog.51cto.com/5177800/1769370

Full Manual Redis Detailed tutorial

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.