redis
Posted 巴蜀秀才
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis相关的知识,希望对你有一定的参考价值。
redis
Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary
Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、
hash。
Redis特点:Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
Redis应用场景:因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取
磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
在Linux中输入命令:redis-cli 进入redis;如果没有安装则使用下面的命令:
sudo apt-get update
sudo apt-get install redis-server
进入redis数据库:redis-cli 注意中间没有空格
选择数据库:select ‘序号’
默认一共有16个数据库
redis的五种数据类型
string 字符串
由于是键值对,所以键必须唯一
设置:set key value 如:set name \'dc\'
mset key value key value.. 如:mset dcuser \'吴哲\' id 3
获取:get key 如:get name
mget key key.. 如:mget dcuser id
这里中文解码失败,跟编码方式有关:我们可以在进入redis的时候使用命令:redis-cli --raw,上面右图是修改之后的!
查看过期时间:ttl key -1表示永久 -2表示不存在
设置过期时间:expire key seconds 如:exprie name 15
设置关键字的时候设置:set key value ex seconds 或 setex key seconds value
追加:append key value 不会覆盖以前的值,而是在后边添加
key的操作:
keys * 查看所有的key
del key 删除某个key
exists key 查看是否存在 存在返回1,不存在返回0
type key 查看类型
keys pattern 查看键,参数支持正则表达式
运算:
incr key 给key加1;
decr key 给key减1;
incrby key increment 给key加increment 如:incrby key 50,给key加50
decrby key increment 给key减去increment
注意这里只能识别字符串里的数字,如果字符串里有非数字的符号,则会报错!
list 列表:
设置列表: 左添加:lpush key value 如:lpush my_llist 1 2 3 4
右添加:rpush key value 如:rpush my_rlist 1 2 3 4
查看列表: lrange my_list 0 -1
观察上图可以看出:lpush添加的元素是往已有元素的左边添加;
rpush添加的元素是往已有元素的右边添加。
查询列表:
列表长度:llen [列表名]
列表某索引对应的值: lindex [列表名] index
上图说明索引是从0开始取的
删除元素:
lpop key 删除key左边的第一个元素
rpop key 删除key右边的第一个元素
lrem key count value 指定删除某个值;count为正数时从左往右删相应个数,为负数时从右往左删除相应个数,为0则全删!
哈希hash:
哈希类似于python中的字典,并且字典中的value仍然是一个字典
设置: hset key field value 如:hset huser name dan
hmset key field value field value...
获取: hget key field 如:hget huser name
hmget key field field...
删除: hdel key field 如:hdel huser name
观察右图不难发现huser并没有显示出来,那是因为value被删除了,huser已经没用了,所以清除内存!
获取所有的(field,vlaue)-->: hgetall key ; 所有的field-->: hkeys key ; 所有的value-->: hvals key :
set 集合:
设置:sadd key values 集合是无序且唯一的,如果values中有同样的元素,则只会保留一个
获取:smembers key
删除:srem key member 指定删除;spop key 随机删除一个元素
获取集合个数:scard key
只有5个元素了,因为刚刚删除了两个!
随机返回一个集合的元素: srandmember key 类似于抽一个幸运观众,我们抽到了h
集合的运算:交,并,差:
交:sinter key1 key2 .. ; sinterstore newkey key1 key2 将交赋予给新集合newkey
并:sunion key1 key2 ... ; sunionstore newkey key1 key2 将并赋予给新集合
差:sdiff key1 key2 ... ; sdiffstore newkey key1 key2 将差赋予给新集合
注意这里新集合的名字都是my_set3所以后面的会覆盖前面的!差运算也类似,但是要注意交和并运算是可以交换前后顺序的
但是差运算是不能交换顺序的!和数学的情况一摸一样!!!
zset 有序集合:
设置:zadd key score member ; 如:zadd my_zset 1 \'one\'
获取:zrange key start stop (withscores) 正序获取
zrevrange key start stop (withscores) 倒叙获取
删除:zrem key member 如:zrem my_zset two
查看元素的索引:索引是从0开始的
正序查找:zrank key member 如: zrank my_zset three
倒叙查找: zrevrank key member 如:zrevrank my_zset three 倒叙查找出的索引是倒着数的
查看有序集合的元素个数:zcard key 如:zcard my_zset
zrangebyscore 返回集合中 score 在给定区间的元素
如:zrangebyscore my_zset 2 3 withscores 包括scores为3的member
zcount 返回集合中 score 在给定区间的数量
如:zcount my_zset 1 4 , 注意返回3是因为删除two时2被删除了,所以只有3个
zscore : 查看score值
如:zscore my_zset two two已经删除,所以不会返回任何值
zremrangebyrank : 删除集合中排名在给定区间的元素(正向)
如:zremrangebyrank my_zset 1 3
zremrangebyscore : 删除集合中 score 在给定区间的元素
如:zremrangebyscore my_zset 3 5
以上是关于redis的主要内容,如果未能解决你的问题,请参考以下文章