Redis3.0.5学习笔记(一)基础入门

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量。



官方网站:http://redis.io/

下载地址:http://redis.io/download

中文帮助:http://www.redis.cn/

Redis是一种面向“键/值”对数据类型的内存数据库,可以满足我们对海量数据的读写需求。

redis的键只能是字符串;

redis的值支持多种数据类型:

1:字符串 string

2:哈希 hash

3:字符串列表 list

4:字符串集合 set 不重复,无序

5:有序集合sorted set  ,不重复,有序

6:HyperLogLog 结构(redis2.8.9版本之后才有,用来做基数统计的算法。)

特点:

高性能(Redis读的速度是11W次/s,写的速度是8.1W次/s)

原子性(保证数据的准确性)

持久存储(两种方式RDB/快照,AOF/日志)

主从结构(master-slave,负载均衡,高可用)

支持集群(3.0版本)

应用:应用在高并发和实时请求的场景。

新浪微博

hash:关注列表,粉丝列表

string:微博数,粉丝数(避免使用select count(*) from...)

sorted set:TopN,热门微博

还有github,stackoverflow等也用到了redis

下载版本:redis-3.0.5.tar.gz

将该tar文件拷贝到/usr/local目录下

# 解压
tar -xzv -f redis-3.0.5.tar.gz
mv redis-3.0.5 redis3.0.5
cd redis3.0.5

# 编译安装
make
make install

# 单机版安装完成

会在/usr/local/bin目录下生成redis的执行命令

[[email protected] bin]# ll
total 15468
-rw-r--r-- 1 root root 29      Nov  8 11:45 dump.rdb
-rwxr-xr-x 1 root root 4587315 Nov  7 23:16 redis-benchmark
-rwxr-xr-x 1 root root 22177   Nov  7 23:16 redis-check-aof
-rwxr-xr-x 1 root root 45395   Nov  7 23:16 redis-check-dump
-rwxr-xr-x 1 root root 4691466 Nov  7 23:16 redis-cli
lrwxrwxrwx 1 root root 12      Nov  7 23:16 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 6464797 Nov  7 23:16 redis-server

启动redis:

# /usr/local/bin目录已经存在于path路径中,可以直接调用该目录下的文件
[[email protected] redis3.0.5]# redis-server
14469:C 08 Nov 19:03:38.817 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ‘‘-._                                             
      _.-``    `.  `_.  ‘‘-._           Redis 3.0.5 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ‘‘-._                                   
 (    ‘      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|‘` _.-‘|     Port: 6379
 |    `-._   `._    /     _.-‘    |     PID: 14469
  `-._    `-._  `-./  _.-‘    _.-‘                                   
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  
 |    `-._`-._        _.-‘_.-‘    |           http://redis.io        
  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   
 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  
 |    `-._`-._        _.-‘_.-‘    |                                  
  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   
      `-._    `-.__.-‘    _.-‘                                       
          `-._        _.-‘                                           
              `-.__.-‘                                               

14469:M 08 Nov 19:03:38.855 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
14469:M 08 Nov 19:03:38.856 # Server started, Redis version 3.0.5
14469:M 08 Nov 19:03:38.856 # 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.
14469:M 08 Nov 19:03:38.856 # 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.
14469:M 08 Nov 19:03:38.890 * DB loaded from disk: 0.034 seconds
14469:M 08 Nov 19:03:38.890 * The server is now ready to accept connections on port 6379

此时redis是启在前台的,如果需要停止服务,只需要Ctrl+C即可:

^C14469:signal-handler (1446980678) Received SIGINT scheduling shutdown...
14469:M 08 Nov 19:04:38.334 # User requested shutdown...
14469:M 08 Nov 19:04:38.334 * Saving the final RDB snapshot before exiting.
14469:M 08 Nov 19:04:38.337 * DB saved on disk
14469:M 08 Nov 19:04:38.337 # Redis is now ready to exit, bye bye...

这种启动方式是非常不方便的,还是希望启动在后台,可以通过修改配置文件redis.conf来控制:

# 修改配置redis.conf:
daemonize yes(后台运行)
logfile /usr/local/redis3.0.5/logs/redis-log.out(日志文件,目录必须存在)

启动:

[[email protected] redis3.0.5]# redis-server /usr/local/redis3.0.5/redis.conf 
[[email protected] redis3.0.5]# ps -ef|grep redis
root     14478     1  0 19:04 ?        00:00:00 redis-server *:6379                          
root     14482 11570  0 19:05 pts/0    00:00:00 grep redis
[[email protected] redis3.0.5]#

客户端验证:

[[email protected] redis3.0.5]# redis-cli
127.0.0.1:6379> set name zs
OK
127.0.0.1:6379> get name
"zs"
127.0.0.1:6379> exit

# 或者
redis-cli [-h 127.0.0.1][-p 6379]

关闭Redis:

[[email protected] redis3.0.5]# redis-cli
127.0.0.1:6379> shutdown
not connected> exit

[[email protected] redis3.0.5]# redis-cli shutdown

可以查看redis-server和redis-cli的帮助来了解其具体使用:

# redis-server
[[email protected] redis3.0.5]# redis-server --help
Usage: ./redis-server [/path/to/redis.conf] [options]
       ./redis-server - (read config from stdin)
       ./redis-server -v or --version
       ./redis-server -h or --help
       ./redis-server --test-memory <megabytes>

Examples:
       ./redis-server (run the server with default conf)
       ./redis-server /etc/redis/6379.conf
       ./redis-server --port 7777
       ./redis-server --port 7777 --slaveof 127.0.0.1 8888
       ./redis-server /etc/myredis.conf --loglevel verbose

Sentinel mode:
       ./redis-server /etc/sentinel.conf --sentinel
       
# redis-cli
[[email protected] redis3.0.5]# redis-cli --help
redis-cli 3.0.5

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h <hostname>      Server hostname (default: 127.0.0.1).
  -p <port>          Server port (default: 6379).
  -s <socket>        Server socket (overrides hostname and port).
  -a <password>      Password to use when connecting to the server.
  -r <repeat>        Execute specified command N times.
  -i <interval>      When -r is used, waits <interval> seconds per command.
                     It is possible to specify sub-second times like -i 0.1.
  -n <db>            Database number.
  -x                 Read last argument from STDIN.
  -d <delimiter>     Multi-bulk delimiter in for raw formatting (default: \n).
  -c                 Enable cluster mode (follow -ASK and -MOVED redirections).
  --raw              Use raw formatting for replies (default when STDOUT is
                     not a tty).
  --no-raw           Force formatted output even when STDOUT is not a tty.
  --csv              Output in CSV format.
  --stat             Print rolling stats about server: mem, clients, ...
  --latency          Enter a special mode continuously sampling latency.
  --latency-history  Like --latency but tracking latency changes over time.
                     Default time interval is 15 sec. Change it using -i.
  --latency-dist     Shows latency as a spectrum, requires xterm 256 colors.
                     Default time interval is 1 sec. Change it using -i.
  --lru-test <keys>  Simulate a cache workload with an 80-20 distribution.
  --slave            Simulate a slave showing commands received from the master.
  --rdb <filename>   Transfer an RDB dump from remote server to local file.
  --pipe             Transfer raw Redis protocol from stdin to server.
  --pipe-timeout <n> In --pipe mode, abort with error if after sending all data.
                     no reply is received within <n> seconds.
                     Default timeout: 30. Use 0 to wait forever.
  --bigkeys          Sample Redis keys looking for big keys.
  --scan             List all keys using the SCAN command.
  --pattern <pat>    Useful with --scan to specify a SCAN pattern.
  --intrinsic-latency <sec> Run a test to measure intrinsic system latency.
                     The test will run for the specified amount of seconds.
  --eval <file>      Send an EVAL command using the Lua script at <file>.
  --help             Output this help and exit.
  --version          Output version and exit.

Examples:
  cat /etc/passwd | redis-cli -x set mypasswd
  redis-cli get mypasswd
  redis-cli -r 100 lpush mylist x
  redis-cli -r 100 -i 1 info | grep used_memory_human:
  redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
  redis-cli --scan --pattern ‘*:12345*‘

  (Note: when using --eval the comma separates KEYS[] from ARGV[] items)

When no command is given, redis-cli starts in interactive mode.
Type "help" in interactive mode for information on available commands.

Redis默认支持16个数据库,其序号为0-15:

# 在redis.conf的配置文件中默认配置如下
# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and ‘databases‘-1
databases 16

可以通过修改redis.conf中databases文件修改其支持的数据库个数;

序号是固定的,不支持自定义序号;

redis默认选中的是0号数据库;

SELECT 数字可以切换数据库;

多个数据库之间不是完全隔离,flushall能够清理所有数据。

[[email protected] redis3.0.5]# redis-cli 
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set name zs
OK
127.0.0.1:6379> get name
"zs"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
(nil)
127.0.0.1:6379[1]> set name li
OK
127.0.0.1:6379[1]> get name
"li"
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> get name
"zs"
127.0.0.1:6379> select 16
(error) ERR invalid DB index
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> exit
# flushall之后数据库0和1的值都被清理了。
[[email protected] redis3.0.5]#
时间: 2024-12-09 19:46:22

Redis3.0.5学习笔记(一)基础入门的相关文章

Redis3.0.5学习笔记(四)Redis中键的生存时间

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量. 本文出自 "闷葫芦的世界" 博客,请务必保留此出处http://luchunli.blog.51cto.com/2368057/1710786

Redis3.0.5学习笔记(三)JavaApi操作Redis

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量. 本文出自 "闷葫芦的世界" 博客,请务必保留此出处http://luchunli.blog.51cto.com/2368057/1710783

Java快速教程--vamei 学习笔记(基础篇)

链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html java快速教程第1课 从HelloWorld到面向对象 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/14/2958654.html java快速教程第2课 方法与数据成员 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/25/2964430.html java快

MySQL学习笔记之一 MySQL入门

本人之前接触的关系型数据库主要是oracle和sqlserver,而对于mysql知之甚少,但查阅网上资料发现,mysql与oracle非常相似,所以学起来应该不会很费劲,在总结的时候可能更多的把关注点放在它与oracle的不同之处. 一.简介 MySQL是一个真正的多用户.多线程SQL数据库服务器.SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言.MySQL是一个客户端/服务器结构的实现, 它由一个服务器守护程序mysqld和很多不同的客户程序和库组成. MySQL的普及并不局限于

C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字节的值,该如何在它上面调用方法? 二:值类型转换为引用类型--装箱 2.1CLR对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址.这个地址就是一个指向对象的引用. int i = 10; Object obj = i; 三:将引用类型转换为值

jQuery学习笔记——jQuery基础核心

代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或执行功能函数的时候可以这么写: $(function () {}); //执行一个匿名函数 $(‘#box’);//进行执行的ID元素选择 $(‘#box’).css(‘color’, ‘red’);//执行功能函数由于$本身就是jQuery对象的缩写形式,那么也就是说上面的三段代码也可以写成如下形式:jQ

HBase-1.0.1学习笔记汇总

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量. HBase-1.0.1学习笔记(一)集群搭建 http://luchunli.blog.51cto.com/2368057/1682049HBase-1.0.1学习笔记(二)客户端访问 http://luchunli.blog.51cto.com/2368057/1687458 HBase-1.0.1学习笔记(三)启动脚本解析 http://luchunli.blog.51cto.com/2368057/1690619 HBas

现代C++学习笔记之二入门篇2,数据转换

static_cast:    这种强制转换只会在编译时检查. 如果编译器检测到您尝试强制转换完全不兼容的类型,则static_cast会返回错误. 您还可以使用它在基类指针和派生类指针之间强制转换,但是,编译器在无法分辨此类转换在运行时是否是安全的. dynamic_cast: dynamic_cast在运行时检查基类指针和派生类指针之间的强制转换. dynamic_cast 是比 static_cast 更安全的强制类型转换,但运行时检查会带来一些开销. const_cast:    con

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类