Linux网络服务-5-2-redis-1-安装与基本命令

Linux网络服务-5-2-redis-1-安装与基本命令

Scroll Down

官方网站:https://redis.io

一、redis下载与安装

1、下载安装包

# wget http://download.redis.io/releases/redis-5.0.4.tar.gz

2、安装gcc

如果没有gcc,把gcc给安装上
# rpm -qa | grep gcc
# yum -y install gcc

3、编译安装

# tar -xzvf redis-5.0.4.tar.gz
# cd redis-5.0.4
# make
# echo $?
# make PREFIX=/usr/local/redis install
# echo $?

4、修改配置文件

# mkdir /usr/local/redis/etc
# cp ./redis.conf /usr/local/redis/etc/
# vim /usr/local/redis/etc/redis.conf

daemonize yes
# 作用是允许后台运行
image.png

5、启动

# ln -s /usr/local/redis/bin/* /usr/local/bin/
# 启动需要指定配置文件
# redis-server /usr/local/redis/etc/redis.conf
# netstat -antp | grep 6379
# 进入redis的命令行模式下
# redis-cli
# 关闭redis
# redis-cli shutdown
# 此时redis的服务已关闭或者Tcp状态机出去TIME_WAIT的状态
# netstat -antp | grep 6379

二、redis常用命令

1、string类型及操作

string是最简单的类型,一个key对应一个value,string类型是二进制且安全的。redis的string类型可以是任何数据。

① set: 设置key对应的值为string类型
例:
添加一个name = ishells的键值对
redis 127.0.0.1:6379> set name ishells

image.png

② setnx: 设置key对应的值为string类型,如果key已经存在,返回0,nx就是not exist的意思

image.png

③ get: 获取key对应的string值,如果key不存在就返回nil

④ mset & mget: 同时设置和获取多个键值对

image.png

⑤ incrby: 对key的值做加(指定值)操作,并返回新的值。

image.png

⑥ del: 删除一个已经创建的key

image.png

2、hash类型及操作:

Redis hash是一个string类型的field(字段)和value的映射表(类似于SQL的表结构),它的添加、删除操作都是用0、1来表示,hash特别适合用于存储对象,相较于将对象的每个字段存成单个string类型,将每一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

例:
为stu表创建一个name字段( key ),键值是zhangsan,一个age字段,键值是18,一个sex字段,键值是man;同样为

image.png

hset 设置hash filed为指定值,如果key不存在,则先创建。

hget 获取hash filed的指定key值,hmset 一次设置为hash filed的key值、hmget 一次获取多个filed 及其 key 值

hdel 删除指定表中的某一个键值对

hgetall 列出表中的所有键值对

image.png

#### 3、list类型及操作

list是一个链表结构( 链表结构就是一个键可以存多个值,比如图中 “老王” 是一个键,其值可以有多个,分别是“laowang”,“38”,“man” ),主要功能是push、pop、获取一个范围内的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或尾部添加删除元素。

与 hash filed的区别就是,hash的一个表中还需要指定key,才能添加其value值,而在list中,声明一个表之后只用添加value值即可。

lpush(listpush):在key对应list的头部添加字符串元素

lrange:从指定链表中获取指定范围的元素
( 0 -1:此范围代表全部元素,意味从头到尾 )

image.png

lpush、rpush、lpop、rpop、lrange

image.png

4、Set类型及操作

set是集合,它是string类型的无序集合。Set通过hash table实现,对集合我们可以取并集、交集、差集。通过这些操作我们可以实现社交网络中的好友推荐和blog的tag功能,集合不允许有重复值。

image.png

sadd 添加一个或多个元素到集合中

smembers 获取集合里面所有的元素

srem 从集合中删除指定的一个或多个元素

spop 随机从集合中删除一个元素,并返回

scard 获取集合里面的元素个数

sdiff 返回集合1与集合2的差集,默认第一个指定的集合为参照对象

image.png

sinter 获得两个集合的交集

sunion 获取指定集合的并集

image.png

5、zset类型及操作

zset是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存的value,一列存的顺序。操作中key理解为zset的名字。

image.png

zadd 向一个指定的有序集合中添加元素,每一个元素会对应有一个分数,你可以指定多个分数/成员组合。如果一个指定的成员已经在对应的有序集合中了,那么其分数就会被更新成最新的,并且该成员会重新调整到正确的位置,以确保集合有序。分数的值必须是一个表示数字的字符串。

zrange:返回有序集合中,指定区间内的成员。其中成员按照score(分数)值从小到大排序。具有相同score值的成员按照字典顺序来排列

zrem 删除有序集合中指定的值

withscores 意思是返回集合中元素的同时,返回其分数(score)

zcard 返回有序集合元素的个数

image.png

6、其它相关命令

keys:按照键名查找指定的键,支持通配符(*?等)

exists:确认一个键是否存在

del:删除一个键

image.png

expire:设置一个键(已存在)的过期时间,如果该键的过期时间到了,其将会被自动删除

ttl:以秒为单位,返回指定键的剩余有效时间

当key不存在时,返回-2

当key存在但没有设置剩余生存时间,返回-1

否则,以秒为单位,返回key的剩余生存时间

image.png

select:选择一个数据库,默认连接的数据库是 0,redis可以支持共16个数据库( 0-15 )。在配置文件中,通过databases 16关键字定义

move:将当前数据库的键移动到指定的数据库中

type:返回键的类型

dbsize:返回当前库中键的数量( 所有类型 )

image.png

save:保存所有的数据( 即将内存中的数据保存到硬盘上 )。很少在生产环境直接使用save命令,因为它会阻塞所有的客户端的请求,可以使用 bgsave 命令代替。在 bgsave 命令的子进程保存数据的时候如果发生错误 ,使用save命令保存最新的数据则是最后的手段。

info:获取服务器的详细信息

config get:获取redis服务器配置文件中的参数,支持通配符

flushdb:删除当前数据库中所有的数据

flushall:删除所有数据库中的所有数据