介绍
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区
redis的优点是:
异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
安装
1 yum方式
yum install epel-release # 安装epel-release库
yum install redis # 安装redis
systemctl start redis [centos7下] /etc/rc.d/init.d/redis start [centos6下]
redis-server /etc/redis.conf # 带配置文件启动
vim /etc/redis.conf
bind 127.0.0.1 改为 bind 0.0.0.0 # 开启远程访问
requirepass yourpasswd # 设置访问密码
redis-cli -h host -p port -a password # 客户端访问
推荐使用桌面工具Redis Desktop Manager
下载地址为:https://redisdesktop.com/download
2 源码安装
yum group install "Development Tools"
wget http://download.redis.io/releases/redis-3.0.3.tar.gz
tar zxf redis-3.0.3.tar.gz
cd redis-3.0.3
make
make install
cd utils/
./install_server.sh
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
redis.conf requirepass 修改密码
cd src/
./redis-server # 启动
./redis-cli -p 6379 -a passwd # 客户端登陆
redis简单命令
1 检测是否在工作
127.0.0.1:6379> ping
PONG
2 获取配置
语法格式:CONFIG GET CONFIG_SETTING_NAME
127.0.0.1:6379> config get * # 获取所有配置
1) "dbfilename"
2) "dump.rdb"
....
3 编辑配置
语法格式:CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
127.0.0.1:6379>
4 数据类型
a 字符串 Redis中的字符串是一个字节序列
127.0.0.1:6379> set name 'lyon'
OK
127.0.0.1:6379> get name
"lyon"
b 散列/哈希 Redis散列/哈希(Hashes)是键值对的集合。Redis散列/哈希是字符串字段和 字符串值之间的映射。因此,它们用于表示对象。
HMSET ukey username "lyon" password "123" points 200
c Redis列表是字符串列表,按插入顺序排序。
127.0.0.1:6379> lpush mylist memcached
(integer) 1
127.0.0.1:6379> lpush mylist redis
(integer) 2
127.0.0.1:6379> lpush mylist mongodb
(integer) 3
127.0.0.1:6379> lpush mylist sqlite
(integer) 4
127.0.0.1:6379> lrange mylist 0 5
1) "sqlite"
2) "mongodb"
3) "redis"
4) "memcached"
d 集合
Redis集合是字符串的无序集合,集合具有唯一属性
127.0.0.1:6379> sadd list2 memcached
(integer) 1
127.0.0.1:6379> sadd list2 redis
(integer) 1
127.0.0.1:6379> sadd list2 redis
(integer) 0
127.0.0.1:6379> smembers list2
1) "redis"
2) "memcached"
e 可排序集合
Redis可排序集合类似于Redis集合,是不重复的字符集合。 不同之处在于,排序集合的每个成员都与分数相关联,这个分数用于按最小分数到最大分数来排序的排序集合。虽然成员是唯一的,但分数值可以重复。
127.0.0.1:6379> zadd myset 1 redis
(integer) 1
127.0.0.1:6379> zadd myset 2 memcached
(integer) 1
127.0.0.1:6379> zadd myset 2 memcached
(integer) 0
127.0.0.1:6379> ZRANGEBYSCORE myset 0 100
1) "redis"
2) "memcached"