(一)什么是Redis?
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。[1]
Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
(二)Redis与Memcached的区别
u 持久化:
l Redis可以用来做缓存,也可以做存储;支持ADF和RDB两种持久化方式
l Memcached只能缓存数据
u 数据结构:
l Redis有丰富的数据类型:字符串、链表,Hash、集合,有序集合
l Memcached一般就是字符串和对象
(三)Redis的安装与配置
1.解压:tar -zxvf redis-3.0.5.tar.gz
2.make
3.make PREFIX=/root/training/redis install
4.cp ~/tools/redis-3.0.5/redis.conf /root/training/redis/etc/
Redis的核心配置文件:redis.conf
Redis的命令脚本:
redis-benchmark 性能测试工具
redis-check-aof 检查AOF日志
redis-check-dump 检查RDB日志
redis-cli 启动命令行客户端
redis-sentinel
redis-server 启动Redis服务
启动Redis:
./redis-server ../etc/redis6379.conf
./redis-server ../etc/redis6380.conf
这样就在6379和6380端口上,各自启动了一个Redis实例;也可以通过ps命令查看:
启动Redis的客户端:redis-cli
l 默认连接6739端口,也可以通过-p指定连接的端口号:
l ./redis-cli --help显式帮助信息
key操作redis 的key是以string储存的,redis对于key常用的操作指令如下:
1.select db_name使用指定数据库 select 1 # 使用数据库1
2.exits key_name检查指定的 key 是否存在
3.get key_name获取指定 key 的value
4.mget key1 [key2 ..]获取指定多个 key 的value,
5.randomkey随机获取一个 key
6.set key_name key_value设置 key-value
7.getset key_name key_value设置 key-value,并返回key的旧值
8.setnx key_name value只有在 key 不存在时,才设置key
9.mset key1 val1[ key1 val2...]同时设置多个 key-value
10.del key_name删除指定的 key
11.rename key_name new_key_name重命名指定key
12.type key_name返回指定 key 的value的类型
13.dump key_name 序列化指定 key,并返回该key序列化后的value
14.keys pattern查找所有符合给定 pattern 的key,支持使用*作为通配符;
15.keys a* # 查找所有以 ‘a’ 开头的key
16.keys * # 查找所有key
17.move key_name db_name将指定 key-value 移动到指定数据库
18.expire key_name seconds pexpire key_name milliseconds
给指定key设置过期时间,单位分别为秒,毫秒
19.expireat key_name timestamp 设置指定的key在指定的UNIX时间戳过期
20.ttl key_name pttl key_name
返回 key 的TTL(Time to Live)生存时间,分别以 秒,毫秒为单位;
21.persist key_name移除指定 key 的过期时间,该key将持久保存
22.flushdb删除当前数据库的所有 key
23.flushall删除所有数据库的 key
其他操作可进入链接查看
数据类型
① 字符串
② 链表
③ Hash
④ 无序集合
⑤ 有序集合
⑥ Redis数据类型案例分析:网站统计用户登录的次数
1亿个用户,有经常登录的,也有不经常登录的
如何来记录用户的登录信息