redis基础学习

Redis基础使用

一、Redis基础部分: 

*****************redis适用场合****************

1.取最新N个数据的操作

2.排行榜应用,取TOP N 操作

3.需要精确设定过期时间的应用

4.计数器应用

5.Uniq操作,获取某段时间所有数据排重值

6.实时系统,反垃圾系统7.Pub/Sub构建实时消息系统

7.Pub/Sub构建实时消息系统8.构建队列系统

9.缓存

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

SET操作每秒钟 110000 次,GET操作每秒钟 81000 次,服务器配置如下:

Linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 网站使用 Redis 做为缓存服务器。

同时也会将数据写到硬盘上。所以数据是安全的(除突然断电外,重启服务会写到dump.rdb文件中)

 

1.安装: 

tar -zxvf redis-.3.2.0.tar.gz

cd redis-3.2.0

make

cd src && make install

 

2.移动配置文件位置(为了便于管理,不过我没弄)

cd /usr/local/

mkdir -p /usr/local/redis/bin

mkdir -p /usr/local/redis/etc

mv /lamp/redis-3.2.0/redis.conf /usr/local/redis/etc

cd /lamp/redis-3.2.0/src

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

 

3.修改配置文件

启动redis ./redis-server(前台启动Ctrl+C结束进程)

 

[root@ynuo src]# ./redis-server 
2572:C 11 Jun 17:50:30.554 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
2572:M 11 Jun 17:50:30.557 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.0 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 2572
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

2572:M 11 Jun 17:50:30.612 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2572:M 11 Jun 17:50:30.612 # Server started, Redis version 3.2.0
2572:M 11 Jun 17:50:30.613 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
2572:M 11 Jun 17:50:30.614 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
2572:M 11 Jun 17:50:30.629 * DB loaded from disk: 0.016 seconds
2572:M 11 Jun 17:50:30.630 * The server is now ready to accept connections on port 6379

 

 

^C2572:signal-handler (1465638647) Received SIGINT scheduling shutdown...
2572:M 11 Jun 17:50:48.005 # User requested shutdown...
2572:M 11 Jun 17:50:48.005 * Saving the final RDB snapshot before exiting.
2572:M 11 Jun 17:50:48.010 * DB saved on disk
2572:M 11 Jun 17:50:48.010 # Redis is now ready to exit, bye bye...

 

 

如果需要redis后台运行,需要将daemonize由no改为yes。

找到redis.conf 进行vi编辑

 

# On other kernels the period depends on the kernel configuration.
#
# A reasonable value for this option is 60 seconds.
tcp-keepalive 0

################################# GENERAL #####################################

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode

 

 

 


4.启动/随机启动:

 

cd /usr/local/redis/bin

./redis-server /usr/local/redis/etc/redis.conf#启动redis并指定配置文件。

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

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

5.查看是否启动成功 

ps -ef | grep redis

netstat -tunpl | grep 6379#查看端口是否占用。

6.进入客户端/退出 

cd /usr/local/redis/bin

./redis-cli#进入

quit#退出

7.关闭redis  

pkill redis-server#关闭

./redis-cli shutdown#关闭

*

************************************** Redis配置 **********************************************

daemonize    如果需要在后台运行,把该项改为yes  

pidfile      配置多个pid的地址 默认在/var/run/redis.pid

bind 绑定ip,设置后只接受来自该ip的请求

port 监听端口,默认为6379

timeout      设置客户端连接时的超时时间,单位为秒

loglevel     分为4级,debug、verbose、notice、warning

logfile      配置log文件地址

databases    设置数据库的个数,默认使用的数据库为0

save         设置redis进行数据库镜像的频率

rdbcompression    在进行镜像备份时,是否进行压缩

Dbfilename        镜像备份文件的文件名

Dir   数据库镜像备份的文件放置路径

Slaveof     设置数据库为其他数据库的从数据库

Masterauth 主数据库连接需要的密码验证

Requirepass     设置登录时需要使用的密码

Maxclients 限制同时连接的客户数量

Maxmemory 设置redis能够使用的最大内存

Appendonly 开启append only模式

以下了解即可:

Appendfsync 设置对appendonly.aof文件同步的频率

vm-enabled 是否开启虚拟内存支持

vm-swap-file 设置虚拟内存的交换文件路径

vm-max-memory 设置redis使用的最大物理内存大小

vm-page-size 设置虚拟内存的页大小

vm-pages 设置交换文件的总的page数量

vm-max-threads 设置VM IO同时使用的线程数量

Glueoutputbuf 把小的输出缓存存放在一起

hash-max-zipmap-entries 设置hash的临界值

Activerehashing 重新hash

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

5种数据类型:字符串、哈希、链表、集合、有序集合。

支持:push/pop、add/remove 、取交集、并集、差集、排序。

redis<===同步====>mysql

同时也会将数据写到硬盘上。所以数据是安全的(除突然断电外,重启服务会写到dump.rdb文件中)

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

select num#选择库,默认在0库,共16个库

auth liweijie#授权用户所需密码(密码就是redis.conf中配置的密码)

flushdb#清空数据库。

String(字符串)类型: 

set name lijie#设置键name的值为lijie

get name#获取name的值。

keys *#查询所有的键。

setnx name liweijie#如果键已存在则返回0,不更新,防止覆盖。

setex haircolor 10 red #设置键的值的有效期为10秒。

setrange email 6 lampbre.com#替换键的值从第6个字符开始换为lampbre.com

mset name1 李大伟 name2 李小伟#设置多个键的值。

msetnxname1 张三 name3 李四#判断键是否存在,不存在则设置,否则不设置返回0

mget name1 name2 name3#一次获取多个键的值。

getset name1 Tom#重新设置键的值,并返回旧的键值。

getrange email 6 18#截取email键的值,从第6-18位间的字符。

incr uid#每次自增1 (如果key中uid不存在,则设置并从0开始,下同)

incrby uid 5#每次自增5 

incrby uid -5#每次自减5 

decr uid #每次自减1

decrby uid 5#每次自减5

appendname1 @126.com#给name1的值,添加字符串@126.com

strlenname1#返回键name1的值的长度。

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

posted @ 2016-06-11 11:22  戏子诺  阅读(133)  评论(0)    收藏  举报