5.78 Redis 介绍及安装
5.78.1Redis介绍
- Redis官网:redis.io
- Redis是一个键值对存储数据库。
- 属于一种NoSQL。nosql是非关系型数据库的统称。
- 其数据存储在内存里,读写速度非常快,据说是可以达到10w并发。
- 并且支持数据持久化。
- 虽然它属于单线程服务,但这不影响它的高并发特性。
5.78.1 其他非关系型数据库介绍
- 类似键值对数据库还有Memcached,但Redis比Memcached支持更多类型的数据。
- Mecached只支持string类型的数据。
- 但Redis除了支持string外,还支持hash,set,list,zset(有序集合)
5.78.2 Redis安装
- 下载:
wget http://download.redis.io/releases/redis-5.0.3.tar.gz - 解包:
tar zxf redis-5.0.3.tar.gz - 进入目录:
cd redis-5.0.3 - 编译安装:
make
make install - 复制配置文件到/etc/目录下
cp redis.conf /etc/ - 编辑配置文件
vi /etc/redis.conf
将daemonize no改为daemonize yes
让redis在后台启动。 - 启动服务
redis-server /etc/redis.conf
5.79 CentOS7下编写服务管理脚本
- 编辑配置文件 vi /usr/lib/systemd/system/redis.service
- 修改配置文件内容如下:
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid ##pidfile文件在/etc/redis.conf文件里定义了。
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
##到此结束
- 创建软链接 ln -s /usr/lib/systemd/system/redis.service /etc/systemd/system/multi-user.target.wants/redis.service
- 重新加载配置 systemctl daemon-reload
- 启动 systemctl start redis
5.79.1 /etc/redis.conf配置日志文件
5.80 redis的数据类型
5.80.1 登录redis
- 直接登录
redis-cli - 指定IP和端口,端口默认6379
redis-cli -h ip -p port - 指定密码
redis-cli -a 'password'
5.80.2 string类型
- 查询键
keys * - 设定键
set key1 "aminglinux" - 查看键值
get key1 - 同时设定多个键的键值
mset key1 1 key2 'a' key3 'linux' - 同时查看多个键的键值
mget key1 key2
5.80.3list
list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。list用于消息队列。
- 命令可以使用tab键补全,即使使用小写字母也会启动补全。
- list内包含一个元素
LPUSH list1 "aminglinux" - list内包含多个元素
LPUSH list1 "1 2 3"
LPUSH list1 "aaa bbb" - 取出list的内容
LRAGE list1 0 -1 //读取整个list
LPOP list1 //取出最后插入的元素
RPOP list1 //取出最开始插入的元素 - 取出内容后,list里就没有这个值了
5.80.4 set
set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。
SADD set1 a b c
SADD set1 d
SMEMBERS set1 //读取所有元素
SREM set1 c //删除元素
SADD set2 1 a b
SINTER set1 set2 //交集
SUNION set1 set2 //并集
SDIFF set1 set2 //差集
5.80.5 zset (sorted set)
sorted set是有序集合,它比set多了一个权重参数score,使得集合中的元素能够按 score 进行有序排列.
- 数字表示权重
ZADD set3 12 abc
ZADD set3 2 "cde 123"
ZADD set3 24 "123-aaa"
ZADD set3 4 "a123a"
ZRANGE set3 0 -1
ZREVRANGE set3 0 -1 //倒序
5.80.6 hash
其实,hash可以认为是多维度string。(类似关系型数据)
hset hash1 name aming
hget hash1 name
hset hash1 age 30
hget hash1 age
hgetall hash1