Redis的使用
Redis的使用
Redis的下载与安装
下载地址:
上传到Linux并解压
# 在Redis压缩文件目录下
sudo tar -zxvf Redis软件压缩包名.tar.gz
解压成功后编译Redis
# 首先确认安装了GCC
# Ubuntu下安装GCC的命令
sudo apt-get build-depgcc
# CentOS下安装GCC的命令
yum -y install gcc gcc-c++ kernel-devel
# cd到Redis的夹中,编译
make
# 将命令添加至系统变量
make all
编译成功后
cd至src文件夹中,启动Redis服务
# 前台启动
./redis-server
# 后台启动
./redis-server &
关闭redis
./redis.cli shutdown
Redis的基本操作命令
-
沟通命令,查看状态
ping
# 返回PONG,代表redis服务运行正常
-
查看当前数据库中的key的数量
dbsize
-
redis默认使用16个库
可更改redis.conf文件中的database 16
-
切换库的命令
select 库的下标
-
删除当前库的所有数据
flushdb
-
退出
# 并不是关闭服务
exit
Redis的Key的操作命令
-
keys
作用:查找符合模式的patten的key,patten可以使用通配符
*:表示0到多个字符,例如:keys * 查询所有的key
?:表示单个字符,例如:keys wo?d ,可以匹配word,wood
# 库0中没有数据
127.0.0.1:6379> keys *
(empty array)
-
exists
语法:exists key [key...]
作用:判断key是否存在
返回值:整数,若存在返回1,其他返回0,返回存在的key的数量
# 查看hello这个key是否存在
exists hello
# 检查多个key
exists hello world
-
expire
语法:expire key seconds
作用:设置key的生存时间,超过时间key会自动删除,单位是秒
返回值:设置成功返回数字1,其他情况是0
# 设置vip的时间为5秒
expire vip 5
-
ttl
语法:ttl key
作用:以秒为单位,返回key的剩余生存时间
返回值:
-1 :没有设置key的生存时间,key用不过期
-2 : key不存在
数字: key的剩余时间,以秒为单位
-
type
语法:type key
作用:查看key所村塾的数据类型
返回值:字符串表示的数据类型
none(key不存在)
string(字符串)
list(列表)
set(集合)
zset(有序集)
hash(哈希表)
-
del
语法:del key[key]
作用:删除存在的key,不存在的忽略
返回值:数字,删除key的数量
Redis的5中数据类型
-
String
字符串类型是Redis中最基本的数据类型,他能存储任何形式的字符串,包括二进制数据,序列化后的数据,JSON化的对象甚至是一张图片
-
哈希类型 Map
类似于java的MAP
-
列表类型 List
简单的字符串列表
-
集合类型 Set
String类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据
-
有序集合类型 Zset
有序集合zset和集合set一样也是String类型元素的集合,且不允许重复的成员。不同的是zset集合每个元素都会关联一个分数(分数可以重复),redis可通过分数来为集合中的成员进行从小到大排序
Redis数据类型操作命令
基本命令
-
set
将字符串值value设置到key中,重复设置会进行覆盖行为
语法:set key value
# 设置key和value的值
set username zhangsan
-
get
获取key中设置的字段值,如果不存在则返回nil
语法:get key
# 获取username这个key对应的value
get username
-
incr
将key中存储的数据数字值加1,如果不存在,则key的值先被初始化为0再执行incr操作(只能对数字类型的操作)
# 将id字段的值加1
incr id
-
decr
将key中存储的数据数字值减1,如果不存在,则key的值先被初始化为0再执行decr操作(只能对数字类型的操作)
# 将id字段的值加1
incr id
-
append
如果key存在,则将value追加到key原来旧值的末尾
如果key不存在,则将key设置为value
返回值:追加字符串之后的总长度
# 追加内容(world)到执行的key(hello)
append hello world
常用命令
-
strlen返回字符串的长度
返回指定key的字符串的长度
-
getrange
获取指定的key到从start到end的字符串
# 截取从2到5的字符
getrange school 2 5
-
setrange
进行值的覆盖操作,覆盖指定的key到从start到end的字符串
# 假设item的值为java-tmocat,想要改为java-tomcat
setrange item 5 tom
-
mset
一次创建多个key和value
mset k1 a k2 b k3 c
-
mget
一次读取多个value
mget k1 k2 k3
哈希类型常用命令
-
hset
语法:hset hash表的key field value
key不存在会创建新hash表,重复的值会覆盖
返回值:设至成功返回1,已经存在的值会覆盖再返回0
hset website baidu www.baidu.com
hset website google www.google.com
-
hget
根据指定的key获取指定的value,如果不存在则返回nil
# 根据指定的key获取指定的value
127.0.0.1:6379> hget website baidu
"www.baidu.com"
-
hmset
可将多个key和value同时存储到hash表中
hmset website taobao www.taobao.com tianmao www.tianmao.com
-
hmget
可从指定hash中根据多个ket获取value
127.0.0.1:6379> hmget website tianmao taobao
1) "www.tianmao.com"
2) "www.taobao.com"
-
hgetall
可获取指定的hash中全部的value
127.0.0.1:6379> hgetall website
1) "baidu"
2) "www.baidu.com"
3) "google"
4) "www.google.com"
5) "taobao"
6) "www.taobao.com"
7) "tianmao"
8) "www.tianmao.com"
-
hdel
删除指定hash中的指定key的值
# 删除指定hash中的指定key的值
127.0.0.1:6379> hdel website baidu
(integer) 1
-
hkyes
返回hash中所有的file
127.0.0.1:6379> hkeys website
1) "google"
2) "taobao"
3) "tianmao"
-
hvals
返回hash中所有的value
127.0.0.1:6379> hvals website
1) "www.google.com"
2) "www.taobao.com"
3) "www.tianmao.com"
-
hexists
查看指定hash中指定的key是否存在,存在返回1,不存在返回0
127.0.0.1:6379> hexists website taobao
(integer) 1
列表List常用命令
-
lpush
语法:lpush key value[value..
作用:将一个或多个值value插入到列表key的表头(最左边),从左边开始插入值
返回值:数字,新列表的长度
127.0.0.1:6379> lpush mylist a b c
(integer) 3
# 查看插入的值
| row |value|
| 1 | c |
| 2 | b |
| 3 | a |
# 发现是倒着插入的
-
rpush
语法:lpush key value[value..
作用:将一个或多个值value插入到列表key的表头(最右边),从右边开始插入值
返回值:数字,新列表的长度
127.0.0.1:6379> rpush mylist a b c
(integer) 3
# 查看插入的值
| row |value|
| 1 | a |
| 2 | b |
| 3 | c |
# 发现顺序插入的
-
lrange
语法:lrange list集合 下标 下标
作用:从右获取指定下标到指定下标的元素
lrange list -1 -3
-
lindex
语法:lindex key index
作用:获取列表中指定index的元素,列表元素不删除,只是查询;0表示第一个元素,-1表示最后一个元素
返回值:指定下标的元素;index不在列表范围之内,返回nil
lindex mylist 1
-
llen
查看列表中元素的个数
-
lrem
根据参数dount的值,移除列表中与参数value相等的元素,
count > 0,从列表的左侧开始向右开始移除;
count < 0则从列表的尾部开始移除;
count = 0移除表中所有与value相等的值
# 从左到右删除2个值为java的元素
lrem mylist 2 java
-
lset
对指定下标的值进行替换,下标从0开始,超出范围会报错
lset mylist 1 HELLO
-
linsert
语法:linsert key BEFORE|ALFTER pivot value
将值value插入到列表key当中位于值pivot之前或之后的位置
返回值:命令执行成功,返回新列表的长度,没有找到pivot返回-1,key不存在返回0
集合类型set
-
sadd
语法:sadd key member[member]
将一个或多个member元素加入到集合key当中,已经存在的menber元素将被忽略,不会再加入
返回值:加入到集合的新元素个数。不包括被忽略的元素
# 向myset中添加三个元素
sadd myset sql java c
-
smembers
获取set集合中的所有成员元素
127.0.0.1:6379> smembers myset
1) "java"
2) "sql"
3) "c"
-
sismember
判断指定的元素在set中是否存在,存在返回1,不存在返回0
127.0.0.1:6379> sismember myset java
(integer) 1
-
scard
查看set集合中的元素个数
127.0.0.1:6379> scard myset
(integer) 3
-
srem
查看指定元素在set集合中的下标
127.0.0.1:6379> srem myset java
(integer) 1
-
srandmenber
只提供key,随机返回集合中的一个元素,元素不能删除,依然在集合中
-
spop
从集合中随机删除元素
返回值是被删除的元素
有序集合类型zset
-
zadd
向集合中添加元素,会自动排序
127.0.0.1:6379> zadd student 80 css 95 mysql 99 java
(integer) 3
-
zrange
获取指定下标的元素,显示顺序是从小到大,添加withscores关键字可以显示value以及score
127.0.0.1:6379> zrange student 0 -1
1) "css"
2) "mysql"
3) "java"
127.0.0.1:6379> zrange student 0 2 withscores
1) "css"
2) "80"
3) "mysql"
4) "95"
5) "java"
6) "99"
-
zrevrange
获取指定下标的元素,显示顺序是从大到小,添加withscores关键字可以显示value以及score
-
zrem
删除一个或多个成员
返回值:被删除成功的成员数量
-
zcard
统计指定key在集合中的个数,不存在则返回0
-
zrangebyscore
获取有序集key中,指定范围之间的成员,类似于MySQL中的between
-
zreverangebyscore
求score的平均
-
zcount
指定数值范围内的成员数量