官方网站: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.confdaemonize yes
# 作用是允许后台运行
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
② setnx: 设置key对应的值为string类型,如果key已经存在,返回0,nx就是not exist的意思
③ get: 获取key对应的string值,如果key不存在就返回nil
④ mset & mget: 同时设置和获取多个键值对
⑤ incrby: 对key的值做加(指定值)操作,并返回新的值。
⑥ del: 删除一个已经创建的key
2、hash类型及操作:
Redis hash是一个string类型的field(字段)和value的映射表(类似于SQL的表结构),它的添加、删除操作都是用0、1来表示,hash特别适合用于存储对象,相较于将对象的每个字段存成单个string类型,将每一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
例:
为stu表创建一个name字段( key ),键值是zhangsan,一个age字段,键值是18,一个sex字段,键值是man;同样为
① hset 设置hash filed为指定值,如果key不存在,则先创建。
② hget 获取hash filed的指定key值,hmset 一次设置为hash filed的key值、hmget 一次获取多个filed 及其 key 值
③ hdel 删除指定表中的某一个键值对
④ hgetall 列出表中的所有键值对
#### 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:此范围代表全部元素,意味从头到尾 )
③ lpush、rpush、lpop、rpop、lrange
4、Set类型及操作
set是集合,它是string类型的无序集合。Set通过hash table实现,对集合我们可以取并集、交集、差集。通过这些操作我们可以实现社交网络中的好友推荐和blog的tag功能,集合不允许有重复值。
① sadd 添加一个或多个元素到集合中
② smembers 获取集合里面所有的元素
③ srem 从集合中删除指定的一个或多个元素
④ spop 随机从集合中删除一个元素,并返回
⑤ scard 获取集合里面的元素个数
⑥ sdiff 返回集合1与集合2的差集,默认第一个指定的集合为参照对象
⑦ sinter 获得两个集合的交集
⑧ sunion 获取指定集合的并集
5、zset类型及操作
zset是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存的value,一列存的顺序。操作中key理解为zset的名字。
① zadd 向一个指定的有序集合中添加元素,每一个元素会对应有一个分数,你可以指定多个分数/成员组合。如果一个指定的成员已经在对应的有序集合中了,那么其分数就会被更新成最新的,并且该成员会重新调整到正确的位置,以确保集合有序。分数的值必须是一个表示数字的字符串。
② zrange:返回有序集合中,指定区间内的成员。其中成员按照score(分数)值从小到大排序。具有相同score值的成员按照字典顺序来排列
③ zrem 删除有序集合中指定的值
withscores 意思是返回集合中元素的同时,返回其分数(score)
④ zcard 返回有序集合元素的个数
6、其它相关命令
① keys:按照键名查找指定的键,支持通配符(*?等)
② exists:确认一个键是否存在
③ del:删除一个键
④ expire:设置一个键(已存在)的过期时间,如果该键的过期时间到了,其将会被自动删除
⑤ ttl:以秒为单位,返回指定键的剩余有效时间
当key不存在时,返回-2
当key存在但没有设置剩余生存时间,返回-1
否则,以秒为单位,返回key的剩余生存时间
⑥ select:选择一个数据库,默认连接的数据库是 0,redis可以支持共16个数据库( 0-15 )。在配置文件中,通过databases 16关键字定义
⑦ move:将当前数据库的键移动到指定的数据库中
⑧ type:返回键的类型
⑨ dbsize:返回当前库中键的数量( 所有类型 )
⑩ save:保存所有的数据( 即将内存中的数据保存到硬盘上 )。很少在生产环境直接使用save命令,因为它会阻塞所有的客户端的请求,可以使用 bgsave 命令代替。在 bgsave 命令的子进程保存数据的时候如果发生错误 ,使用save命令保存最新的数据则是最后的手段。
⑪ info:获取服务器的详细信息
⑫ config get:获取redis服务器配置文件中的参数,支持通配符
⑬ flushdb:删除当前数据库中所有的数据
⑭ flushall:删除所有数据库中的所有数据