redis数据库的安装与常用命令
一 redis数据库
1.1 redis数据库简介
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
1.2 redis数据库优点
- 具有极高的数据读写速度
- 支持丰富的数据类型
- 支持数据的持久化
- 原子性
- 支持数据备份
二 编译安装redis
yum -y install gcc gcc-c++ make
tar zxvf redis-5.0.7.tar.gz -C /opt
cd redis-5.0.7/
make
make PREFIX=/usr/local/redis install
软链接
ln -s /usr/local/redis/bin/* /usr/local/bin/
cd /opt/redis-5.0.7/utils
./install_server.sh
.. //一路回车带闪电
redis配置文件路径
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/redis/bin/redis-server //可执行文件路径
Cli Executable : /usr/local/bin/redis-cli //客户端命令工具
进入配置文件,添加允许监听的主机地址
vim /etc/redis/6379.conf
70行 bind 127.0.0.1 20.0.0.100
重启redis
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start
三 redis数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
3.1 string(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string 类型是二进制安全的。redis的string 可以包含任何数据。比如jpg图片或者序列化的对象。
string类型是Redis最基本的数据类型,string类型的值最大能存储512MB。
示例:
20.0.0.100:6379> set name cenjeal
20.0.0.100:6379> get name
"cenjeal"
20.0.0.100:6379> type name
string
3.2 Hash(哈希字典)
Redis hash是一个键值(key=>value)对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
每个hash可以存储2的32次方 -1 健值对。
示例:
20.0.0.100:6379> hmset stu name san age 18 sex 男
20.0.0.100:6379> hget stu sex
男
解决中文乱码:
[root@localhost etc]# redis-cli -h 20.0.0.100 -p 6379 --raw
hmset表示创建多个哈希值,hset表示创建一个哈希值。
3.3 List(列表)
Redis列表是简单的字符串列表,按照插入顺序排序,可以重复。
可以添加一个元素到列表的头部(左边)或者尾部(右边)。
列表最多可存储2的32次方-1元素。
20.0.0.100:6379> lpush hobby play
(integer) 1
20.0.0.100:6379> lpush hobby read
(integer) 2
20.0.0.100:6379> lpush hobby study
(integer) 3
20.0.0.100:6379> lrange hobby 0 1
1) "study"
2) "read"
20.0.0.100:6379> lpush hobby read swim sleep
(integer) 6
3.4 Set(集合)
Set是string类型的无序集合
集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。
sadd命令
添加一个string元素到 key对应的set集合中,成功返回1,如果元素已经在集合中返回0。
20.0.0.100:6379> sadd color blue green red black
(integer) 4
20.0.0.100:6379> smembers color
1) "green"
2) "red"
3) "black"
4) "blue"
3.5 zset(有序集合)
Redis zset和set一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
20.0.0.100:6379> zadd color 0 red
(integer) 1
20.0.0.100:6379> zadd color 0 blue
(integer) 1
20.0.0.100:6379> zadd color 1 yellow
(integer) 1
20.0.0.100:6379> zadd color 1 green
(integer) 1
20.0.0.100:6379> zrangebyscore color 0 10
1) "blue"
2) "red"
3) "green"
4) "yellow"
20.0.0.100:6379> zadd color 1.5 black
(integer) 1
四 多数据库概念
Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念.
Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,
客户端可以指定将数据存储在哪个字典中。这与我们熟知的在一个关系数据库实例中可以创建多个数据库类似,
所以可以将其中的每个字典都理解成一个独立的数据库。
每个数据库对外都是一个从0开始的递增数字命名,Redis默认支持16个数据库(可以通过配置文件支持更多,无上限),
可以诵过配置databases来修改这一数字。客户端与Redis建立连接后会自动选择0号数据库,不过可以随时使用SELECT命令更换数据库。
选择数据库
20.0.0.100:6379> select 1
OK
20.0.0.100:6379[1]>
转移数据库
20.0.0.100:6379> keys *
1) "hobby"
2) "stu"
3) "color"
20.0.0.100:6379> move stu 1
(integer) 1
五 其他常用命令
5.1 清空所有数据库数据
20.0.0.100:6379>FLUSHALL
5.2 重命名 rename
20.0.0.100:6379> rename name names
20.0.0.100:6379> exists names
1
5.3 设置超时时间
3秒后超时
20.0.0.100:6379> pexpire names 3000
5.4 查看剩余时间
20.0.0.100:6379> pttl names
5.5 取消超时时间
20.0.0.100:6379> persist names
5.6 随机返回key
20.0.0.100:6379> RANDOMKEY