一、下载安装redis
1.ubuntu下的使用
$ wget http://download.redis.io/releases/redis-3.0.6.tar.gz
$ tar xzf redis-3.0.6.tar.gz
$ cd redis-3.0.6
$ make
打开redis:
$ src/redis-server
使用redis:
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
2.在src目录中的可执行的程序
redis-server:redis的服务器
redis-cli:命令行客户端
redis-benchmark:Redis的性能测试工具
redis-check-aof:AOF文件修复工具
redis-check-dump:RDB文件检测
在redis目录下有一个配置文件redis.conf
打开并修改
3.命令返回值(redis不区分大小写的)
a.状态恢复
b.错误回复
c.整数回复
d.字符串回复
nil表示空的结果
e.多行字符串回复
KEYS * 得到当前数据库中存在的键值
4.得到配置文件中的值
a.获取报错配置
b.获取端口号
c.设置配置文件内容:
d.相关配置
port 6379 表示端口号为6379
bind 127.0.0.1 表示默认绑定的主机地址
timeout 0 ,当客户端闲置多久之后关闭连接,0代表没有启动选项
loglevel notice 日志的记录级别
debug:详细的信息,适合开发测试
verbose:包含很多不太有用的信息
notice:比较适合生产用
warning:警告信息
logfile stdout:日志记录方式,默认标准输出
database 16:配置数据库的数量,默认为16 ,
通过SELECT选择数据库,默认在0号数据库中
---快照---
save <seconds> <changes> //表示多少秒后有几个数据改变,同步到数据中
save 900 1 :900秒内有一个更改
save 300 10 :300秒内有10个更改
rdbcompression yes:存储本地数据库时是否启用压缩,默认启用yes
dbfilename dump.rdb:指定本地数据库的文件名
dir ./指定本地数据库的存放目录
二、Redis的相关数据类型
1、String字符串类型
一个键最多储存512MB
a、SET:设置key对应的value
语法:SET key value [EX seconds] [PX milliseconds] [NX|XX]
(注意):如果KEY值存在,同名将会产生覆盖
b、GET:根据key找到对应的值
语法:GET key
(注意):如果key不存在会返回(nil)
如果key不是字符串,会报错
c、GETRANGE:返回字符串中的一部分(就像php中的substr截取字符串一样)
语法:GETRANGE key start end(可以正负操作)
d、GETSET:设置指定key的值,并且返回旧的值
语法:GETSET key value
(注意):如果key不存在会返回(nil)
如果key不是字符串,会报错
e、MSET:一次设置多个
f、MGET:一次获取多个
g、STRLEN:获取key的字符串长度
STRLEN test
h、SETRANGE:相当于字符串替换效果(str_replace)
(注意):如果设置的key原来的字符串长度要比偏移量小,就会以零字节(\x00)来填充
i、SETNX:只有key不存在才能设置成功
j、SETEX:设置key的过期时间(原子型操作)
k、MSETNX:设置多个key的、只有key不存在才能设置成功
l、PSETEX:以毫秒为单位设置key的生存周期
m、PTTL:获取生存的时间
n、INCR:对key中存储的数据+1
(注意):key不存在自动加默认为0
INCR by 可以指定增量
o、DECR:将key中储存的数字减1
p、DECRBY将key中的值减去特定的值
q、APPEND:将值追加到字符串的末尾
(语法):append key value
(注意):不存在时,相当于SET操作
2、Hash类型
a、在配置文件中可以通过一下配置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
b、HEST:将哈希表中key中的域field设置成指定的value
(语法):HSET key field value
如果哈希表中key中的field不存在,相当于设置一个新值,返回值是1
如果哈希表中key中给定field存在,相当于重新赋值,成功返回0
c、HGET:返回哈希表中的key值
如果哈希表中不存在返回(nil)
d、HSETNX:将哈希表中的field设置成指定的值,只要field不存在的时候才可以成功
e、HMSET:通过将多个field-value设置到hash表key中
f、HMGET:一次性返回多个数据
g、HKEYS:返回hash中的key的所有的field
h、HVALS:返回hash中的key所有的field的值
i、HEXISTS:检测hash中key的field是否存在
存在返回1,不存在返回0
j、HLEN:返回所有hash表中的field的数量
k、HINCRBY:对hash中的数值加特定的值(不能对字符串操作)
l、HINCRBYFLOAT:对hash中的浮点值加上特定的值
m、HDEL:删除hash中的key的指定域,可以删除一个也可以删除多个
n、HGETALL:获取hash中所有的键和值
3、List类型
a、LPUSH:向列表左端添加元素(可以重复)
b、RPUSH:项列表右端添加元素(可以重复)
c、LPUSHX:向列表左端添加元素(列表不存在是就不能添加,每次只能添加一个值)
d、RPUSHX:向列表右端添加元素(列表不存在是就不能添加,每次只能添加一个值)
e、LPOP:将列表左端元素弹出
f、RPOP:将列表右端元素弹出
g、LLEN:获取列表的长度
h、LRANGE:获取列表片段
LRANGE key start stop
LRANGE myList1 0 -1 获取列表中所有的元素
注意:
如果start下标比列表的最大下标end大,返回空列表
如果stop比列表长度大,返回到列表的尾部
i、LREM:删除列表指定的值
LREM key count value
count值有一下几种:
count>0:从列表的头部开始,向尾部搜索,移除与value相等的元素,移除count个
count<0:从列表的尾部开始,向头部搜索,移除与value相等的元素,移除count个
count = 0:删除全部所有相匹配的元素值
j、LINDEX:获得指定索引元素的值
k、LSET:设置指定索引的值
l、LTRIM:只保留列表的一部分
LTRIM key start stop
m、LINSERT:向列表插入元素
n、RPOPLPUSH:将元素从一个列表队尾转到另一个列表队首
o、BLPOP:是表示阻塞LPOP的进程
4、Set集合类型(无序集合)
a、SADD:向集合中添加元素
b、SMEMBERS:返回指定集合中的元素
c、SISMEMBER:检测value是否是集合中的成员
d、SREM:删除集合中的一个或者多个成员
e、SPOP:删除并返回集合中的随机元素
f、SRANDMEMBER:随机返回集合中的元素
SRANDMEMBER key count
注意:
count为正数,而且小于集合中的元素,返回的一个包含随机元素的集合数组;count大于集合中的元素的个数,这时候会返回整个集合
count为负数,返回一个数组,数组中的成员可能出现重复,数组的长度是count取绝对值,假如绝对值大于数组中的长度,去会的值会重复
5、Zset有序集合类型
a、zadd:向有序集合zset中增加一个元素。
例如:zadd zset 1 Hello
b、zrange:输出zset中指定范围内的的所有元素,按照score从小到大的顺序。(包含两端)
例如:zrange zset 0 -1 withscores,表示输出有序集 合zset中所有的元素,并且输出顺序号。
c、zrem:删除名称为key的zset集合中的元素member。
例如:zrem set1 Hello。
d、zincrby:把有序集合zset中的指定元素的序列号加上指定的值。
例如:zincrby zset 4 Hello
e、zrank:返回名称为key的zset集合中元素的排名,按照下标从小到大的排名。
例如:zrank zset Hello。
f、zrevrank:返回名称为key的zset集合中元素的排名,按照下表从大到小的排名。
例如:zrevrank zset Hello。
g、zrevrange:按照score从大到小的顺序输出集合中所有元素。
例如:zrevrange zset 0 -1 withscores。
h、zrangebyscore:返回集合中给定区间的元素。
例如:zrangebyscore zset 2 3 withscores
i、zcount:返回集合中score在给定区间的数量。
zcount zset 2 3
j、zcard:返回集合中元素的个数。
k、zremrangebyrank:按照索引来删除给定区间的元素。
例如:zremrangebyrank zset 1 2
l、zremrangebyscore:删除score在指定范围内的元素。
例如:zremrangebyscore zset 1 2
m、ZSCORE:返回指定元素的值
6、KEY相关命令
a、KEYS:返回所有复合给定模式的key
×:匹配任意字符
?:匹配任意字符
[]:[a-z]匹配方括号中的任意一个字符
\x:匹配特殊字符\? \*
b、EXISTS:检测指定key是否存在
存在返回1,不存在返回0
c、TYPE:返回类型
存在string、hash、set、zset、list
d、EXPIRE:设置key的过期时间
(注意):如果key已经存在过期时间,在通过EXPIRE设置的时候会覆盖之前过期时间
e、EXPIREAT:需要指定在制定时间戳过期
f、PEXPIRE:以毫秒的形式指定过期时间
h、PEXPIREAT:制定时间戳,单位是毫秒
i、TTL:以秒返回key的剩余时间
(注意):如果key没有设置过期时间,返回-1
如果key不存在返回-2
j、PTTL:以毫秒返回key的剩余时间
k、PERSIST:将一个带有过期时间的key转化为永久的时间
l、DEL:删除指定的KEY
m、RANDOMKEY:随即返回一个key
n、RENAME:重命名一个键
RENAME test1 test2
如果名称没有改变将会报错
o、RENAMENX:重命名的key必须不存在
p、DUMP:序列化给定的key,返回序列化后的值
q、RESTORE:反序列化
r、MOVE:将当前数据库的key移动到另外的数据库中