redis
1.1 什么是Redis
Reids是用C语言开发的一个开源的高性能的键值对(key-value)式数据库(非关系型数据库),redis是将数据放到内存中,
由于内存读取速度快,redis被广泛用于互联网项目中
1.2 Redis下载
http://download.redis.io/releases/redis-3.0.0.tar.gz
1.3 安装Redis(CentOS7的安装redis)
1.3.1 安装前的准备
需要安装C语言的环境
yum install gcc-c++
1.3.2 安装redis
把redis-3.0.0.tar.gz拷贝到/usr/upload下解压源码
tar -zxvf redis-3.0.0.tar.gz
进入解压后的目录进行编译
cd /usr/upload/redis-3.0.0
make
安装到指定目录
make install PREFIX=/usr/local/redis
好了 这玩意儿就安装完成了。接下来去测试一下启动和关闭
1.4启动和关闭redis
1.4.1 前端启动:
1、直接运行bin/redis-server将以前端模式启动。
cd /usr/local/redis/bin
./redis-server
2、这种方法启动是有缺点的,会占用我们的窗口,而且ctrl+c就很容易的就关闭掉了
关闭的方法上面已经说了:CRTL+C 进行关闭。
1.4.2 后端启动
前端启动的方式占用我们的窗口,还很容易就被关了,我们指定不用那种方式,所以接下来就使用后端启动的方式
- 进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下
cp /usr/upload/redis-3.0.0/redis.conf /usr/local/redis/bin
- 修改/usr/java/redis/bin下的redis.conf,他默认的是no, 所以需要将daemonize由no改为yes
- 启动就完了
./redis-server redis.conf
- 关闭
到redis/bin目录下执行如下命令(端口号默认情况下是6379)
./redis-cli -p 端口号 shutdown
1.5 redis的基本命令
redis-cli连上redis服务后,可以在命令行发送命令:
./redis-cli -h 127.0.0.1 -p 6379
- set和**get:**使用set和get可以向redis设置数据、获取数据(我这里使用的是windows的redis,基本命令都是相同的所以如果看出来了也是一样的用法。- -.)
- **keys *:**查看当前库中所有的key值
-
exists:判断key值是否存在(如果存在就是>1,不存在则为0)
-
expire 和 ttl:expire设置key的过期时间,ttl查看key的有效期
EXPIRE key seconds ---->这个是使用格式 key则是你需要设置过期时间的key ,seconds 设置你需要的时间
时间到了查询 ttl 的结果为-2,这时再去get key 是get不到的。
-
**clear:**可以使用clear命令对redis-cli终端屏幕清屏。
不必多言 就是清爽就完了。
1.6 多数据库测试
一个redis实例中呢是包含了16个数据库的,就像mysql数据库一样可以有很多个数据库,客户端可以指定连接哪个数据库
redis的16个数据库是有下标的,[0-15],客户端默认连接的是0号库,可以通过select 命令来切换数据库
这里就可以很明显的看见[1] 。
这里展示的是在1号库中存储的 key 在0号库中是查询不到的。
如果选择一个不存在的数据库就会报这玩意儿:(error) ERR invalid DB index
所以他真的一个实例就16个库。。。。
注意:
- redis 的数据库名字是不支持改变的
- flushall 命令可以清空所有数据库的数据,在哪个库都可以使用
- flushdb 命令可以清空当前数据库的数据
1.7 redis的六种数据类型
1.7.1 string
String: key-value
- 赋值 set key val
127.0.0.1:6379> set name zhangsan
OK
- 取值 get key
127.0.0.1:6379> get name
"zhangsan"
- 删除 del key
127.0.0.1:6379> del name
(integer) 1
- 自增自减 incr key decr key
127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379>
1.7.2 hash
Hash: key-field-value
key: map
- 赋值 HASH key field value
127.0.0.1:6379> hset user name zhangsan
(integer) 1
- 取值 HGET key field
127.0.0.1:6379> hget user name
"zhangsan"
- 删除:HDEL key field
127.0.0.1:6379> hdel user name
(integer) 1
1.7.3 list
List:有顺序可重复,内部是使用双向链表实现的
- 赋值
lpush key val val val…(从左侧添加)
rpush key val val val…(从右侧添加)
127.0.0.1:6379> lpush list a b c d e
(integer) 5
127.0.0.1:6379> rpush list 1 2 3 4
(integer) 9
- 取值 lrange list startIndex endIndex(0-1就是表示列表内的所有value)
127.0.0.1:6379> lrange list 1 4
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lrange list 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
6) "1"
7) "2"
8) "3"
9) "4"
- 删除 lrem key count value
127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "d"
3) "d"
4) "d"
5) "e"
6) "b"
7) "a"
8) "1"
9) "2"
10) "3"
11) "4"
127.0.0.1:6379> lrem list 2 d
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "d"
2) "d"
3) "e"
4) "b"
5) "a"
6) "1"
7) "2"
8) "3"
9) "4"
1.7.4 set
Set 不能重复,存取无序
- 赋值 sadd key member [member…]
127.0.0.1:6379> sadd set1 1 1 2 2 3 4 4
(integer) 4
- 取值 smembers key
127.0.0.1:6379> smembers set1
1) "1"
2) "2"
3) "3"
4) "4"
- 删除 srem key member [member…]
127.0.0.1:6379> smembers set1
1) "3"
2) "4"
1.7.5 zset
SortedSet(zset):有顺序,不能重复
- 赋值 zadd key [NX|XX] [CH] [INCR] score member [score member…]
127.0.0.1:6379> zadd zset1 1 1 2 2 2 2 3 4
(integer) 3
2.取值 zrange key startIndex endIndex [WITHSCORES]
获取指定分数区间的元素个数:zcount key min max
获取元素个数: zcard key
获取指定分数的元素:zrangebyscore key min max [withscores]
获取元素排名(排名从0开始):zrank key member [withscores]
获取元素排名(分数从大到小进行排):zrevrank key member [withscores]
127.0.0.1:6379> zrange zset1 0 -1
1) "1"
2) "2"
3) "4"
127.0.0.1:6379> zcount zset1 0 5
(integer) 3
127.0.0.1:6379> zcard zset1
(integer) 3
127.0.0.1:6379> zrangebyscore zset1 0 5
1) "1"
2) "2"
3) "4"
127.0.0.1:6379> zrank zset1 2
(integer) 1
127.0.0.1:6379> zrank zset1 1
(integer) 0
127.0.0.1:6379> zrevrank zset1 2
(integer) 1
- 删除 zrem key member [member…]
127.0.0.1:6379> zrem zset1 1 2 4
(integer) 3