服务端默认连接端口号为6379
是一个key-value存储系统,它支持存储的value类型很多。包括string(字符串)、list(链表)、set(集合)、zset(有序集合)。
支持各种不同方式的排序
为保证效率,数据都是缓存在内存中,他也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
适用场合:目前全球最大的redis用户时新浪微博
应用程序直接访问redis
应用程序直接访问redis,只有当redis访问你失败时才访问mysql。(redis集群与mysql集群数据同步)
redis数据库提供纵多种灵活的数据结构和数据操作,为不同的数据构建不同的库
安装
下载安装包:http://redis.io/download
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
tar xzf redis-3.2.3.tar.gz cd redis-3.2.3 make MALLOC=libc && cd src && make install mv redis-benchmark redis-check-aof redis-check-rdb redis-cli mkreleasehdr.sh redis-sentinel redis-server redis-trib.rb /usr/sbin/
启动多端口: redis-server --port 6380 &
关闭redis:使用pkill redis-server
命令(Strings类型)
string是最简单的类型,string类型是二进制安全的,redis的string可以包含任何数据。
redis-cli //登录客户端
set 键 值 //设置key对应的值为string类型的value,若键存在,那么对应的值会覆盖原有的值。
setnx 键 值 //设置key对应的值为string类型的value,若键存在则返回0,不存在则插入。
setex 键 数字 值 //设置key对应的值为string类型的value,并指定此键值对应的有效期(默认为秒)
mset 键 值 键 值 ...... //批量设置多个key的值,成功返回ok,失败返回0
msetnx 键 值 键 值 ...... //批量设置多个key的值,成功返回ok,失败返回0.不会覆盖已经存在的键值对!
get 键 //获取值
getset 键 值 //替换key的值,并返回key的旧值
mget 键 键 键 ..... //批量获取多个key的值,若对应key不存在则对应返回nil
incr 键 //对key的值做加加操作,并返回新的值
incrby 键 数值 //同incr类似,加指定值,key不存在会添加key,并认为原来的value是0
decr 键 //对key的值做减减操作,并返回新的值
decrby 键 数值 //同incr类似,减指定值,key不存在会添加key,并认为原来的value是0
append 键 添加的新值 //给指定key的字符串追加value,返回新字符串的长度
命令(hashes类型)
Redish hash 是一个syringe类型的field和value的映射表。他的添加、删除操作都是0(1)(平均)。
hash特别适合于存储对象。相较于将对象的每一个字段存成单个string类型。
将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。
hset 键 hash表字段 对应的值 //设置一个hash表,若key不存在则先创建
hsetnx 键 hash表字段 值 //设置一个hash表,若key不存在则先创建,若存在返回0。
hmset 键 hash表字段 值 hash表字段 值 //同时设置hash的多个表与值
hget 键 hash表字段 //获取hash表中的值
hmget //获取全部指定的hash field
hexists 键 表字段 //测试指定表字段是否存在,存在返回1.
hlen 键 //返回指定hash的field数量
hdel 键 表字段 //删除指定的表字段中的值
hkeys 键 //返回hash的所有表字段
命令(lists类型)
list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等,操作中的key理解为链表的名字。
Redis的list类型其实就是一个每个子元素都是一个string类型的双向链表。
我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。
lpush 键 值 //在key对应的list的头部添加字符串元素
rpush 键 值 //在key对应的list的尾部添加字符串元素
linsert 键 before 旧值 新插入的值 //在key对应的list的特定位置前或者后插入字符串
lrange 键 0 -1 //取值,从头开始取,从尾到头为正方向
lset 键 下标 值 //设置list中指定下标的元素值,用于替换,下标:第一个单词下标为0,依次往下数。
lrem 键 N个 值 //从某个键中删除N个与其他值相同的值(N<0从尾部删除,N=0全部删除)
ltrim 键 下标 下标 //保留从下标到下标内的内容,未保留的值将全部删除
lpop 键 //从表的头部删除元素,并返回删除的元素
rpop 键 //从表的尾部删除元素,并返回删除的元素
rpoplpush 键 键 //把第一个键中的尾部的一个值弹出,给到第二个键中,并且是从头部压入。
lindex 键 索引(数字) //返回名称为key的list中index位置的元素
命令(sets类型)
set是集合,它是string类型的无序集合,set是通过hash table实现的,添加、删除和查找的复杂度都说0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
例子:
set1 (1,2) set2(2,3)
取set1与2的并集:1,2,3
取set1与2的交集:2
取set1与2的差集:1,3
sadd 键 值(元素) //向名称为key的set中添加元素
srem 键 值 //删除名称为key的set中的元素
spop 键 //随机弹出并删除集合中的一个元素
srandmember 键/集合 //随机返回键或者集合中的一个元素,但不会删除这个元素
sdiff 键 键 //返回两个数组中的差集,以第一个键中的元素为标准
sdiffstore 存储键 键 键 //返回两个键中元素的差集并且保存到一个键中
sinter 键 键 //返回所有给定键的交集
sinterstore 存储键 键 键 //返回两个键中元素的交集并且保存到一个键中
sunion 键 键 //返回所有给定key的并集
sunionstore 存储键 键 键 //返回所有给定key的并集,并且保存到一个键中
smove 键(移除) 键(添加) 要剪切的元素 //从第一个集合中移除一个元素,并移动到第二个对应的集合中
smembers //查看添加的集合
scard 键/集合 //查看集合中元素的个数
命令(sorted sets类型)
是set的一个升级版本,他是在set的基础上增加了一个顺序属性,这个 属性在添加、修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。
可以理解为两列的mysql表,一列存储value(值),一列存储顺序。
操作中key(键)理解为zset的名字。
zadd 键 顺序(数字) 值 //向键中的元素添加顺序,用于排序,若元素存在,则更新其顺序。
zrem 键 值 //删除集合中的元素
zrank 键 值//返回名称为键中元素的排名,(按score从小到大排序),即下标。排完序然后找索引值
zrevrank 键 值//返回名称为键中元素的排名,(按score从大到小排序),即下标。排完序然后找索引值
zrangebyscore 键 数字 数字 withscores // 先升序排序,返回score给定范围内的数字。数字 数字:这两个数字为范围
zcount 键 数字 数字 //返回集合中给定score在给定范围的数量
zcard 键 //返回集合中所有元素的个数
zremrangebyrank 键 数字 数字 //删除集合中排名在给定范围中的元素(按索引来删除)
zremrangebyscore 键 数字 数字 //删除集合中排名在给定范围中的元素(按顺序来删除)
zrange 键 0 -1 withscores //在集合中取元素。0与-1为索引,从第一个到最后一个(升序)。withscores为输出顺序号。
zrevrange 键 0 -1 withscores //在集合中取元素。0与-1为索引,从第一个到最后一个(降序)。withscores为输出顺序号。
键值相关命令
keys * //返回库中所有的键,模糊匹配,my*、m*y.........都可以。
exists 键 //确认一个键是否存在
del 键 //删除一个键
expire 键 数字(秒) //对一个已存在的键设置过期时间
persist 键 //取消给键的过期时间
ttl 键 //获取这个键的有效时长,直至为-1,说明此值已经过期
randomkey //随机返回键空间值得一个键
move //将当前数据库中的键转移到其他数据库中
select 数字 //选择数据库,进入客户端时,默认进入0数据库,一共16个数据库。
rename 键名 键新名 //重命名键
type 键 //返回键的类型
服务器相关命令
ping //测试连接是否正常
select 数字(0-15) //选择数据库,Redis数据库编号从0-15,我们可以选择任意一个数据库来进行数据存取。
dbsize // 返回当前数据库中key的数目
info //获取服务器的信息和统计
config 键 //实时传输与存储收到的请求
flushdb //删除当前数据库中所有的key
flushall //删除所有数据库中的所有的键