Redis的使用

Redis的使用

Redis的下载与安装

下载地址:

https://redis.io/download

上传到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到从startend的字符串

# 截取从2到5的字符
getrange school 2 5
  • setrange

进行值的覆盖操作,覆盖指定的key到从startend的字符串

# 假设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

指定数值范围内的成员数量

posted @ 2020-12-03 18:52  艾莉的冷笑话  阅读(135)  评论(0编辑  收藏  举报