redis使用key-value结构存储数据,常用的有五种数据结构:
String:字符串
hash:哈希
list:列表
set:集合
sorted set:有序集合
常用命令
dbsize
查看数据库已存入数据记录数。
keys *
查看所有key。也可以使用keys *a之类的查看特定特征的key。
select num
切换数据库,默认redis有16个数据库对应num为0-15,可以在redis.conf中修改。
flushall
清空所有数据库的数据
flushdb
清空当前数据库的数据
client list
显示已连接的客户端列表
client kill ip:port
断开某个客户端的链接
shutdown
关闭redis数据库
exit
断开并退出客户端操作
String字符串
基本类型。二进制安全,可以存放任何数据,比如图片和序列化对象,单个对象最大不超过512MB。
set key value
存入字符串,双引号可以省略。
get key
获取字符串,同样可以省略双引号。
del key
删除
strlen key
显示字符串长度
append key str
在key的value后面跟加str
incr key
自增
decr key
自减
incrby key num
自增num
decrby key num
自减num
expire key time
以秒设置存活时间
pexpire key time
以毫秒设置存活时间
ttl key
查看还有多少时间,没有设置时间的显示为-1,设置的显示为剩余时间,到时间的(即不存在的)显示为-2
setnx key value
如果不存在则放入,如果存在则失败
setex key num value
待时间设定值
getrange key index1 index2
从index1到index2,取字符串
setrange key index upvalue
从index开始,覆盖型替换字符串为upvalue,没有覆盖到的不变
mset k1 v1 k2 v2 ...
同时设置多个数据
mget k1 k2 ...
同时获取多个数据,分行显示
msetnx k1 v1 k2 v2 ...
同时设置多个数据,如果有数据已存在则设置失败,一个存在,全部失败。
hash哈希
hmset key property1 value1 preperty2 value2 ...
存入哈希数据,key是哈希数据的key,property对应的是各个属性,value对应的是各个属性对应的数据。并没有要求一次性数据存储完,完全可以后期再修改添加,不会对之前的数据产生影响。
hget key property
获取key哈希数据中property属性对应的数据。
hgetall key
获取所有属性和数据。
hmget key property1 property2...
获取所有列出的属性值
hdel key property
删除hash中的摸个property
hlen key
显示有几个属性
hvals key
显示所有属性
hkeys key
显示所有属性值
hincrby key property num
给某个属性值加整数num
hincrbyfloat key property float
给某个属性值加小数float
hexists key property
判断key中是否存在某个属性
hsetnx key property value
如果不存在则增加属性和属性值
list列表
list类似java中的数组和集合的中间产物。可以用于模仿栈和队列。为方便记录和理解,先定义:左边为头,即前方;右方为底,即后方。有些操作提供双向,有些操作只有单向。所以默认下标
rpush key value
从右方压入数据。
lpush key value
从左方压入数据。
rpop key
从右侧弹出数据
lpop key
从左侧弹出数据
rpoplpush key1 key2
从key1右侧弹出,并从左侧压入key2
lrem key num value
删除key中num个value。
lindex key index
使用下标查询数据,不存在则显示为空。
lset key index value
通过索引设置列表元素的值。
lrange key index1 index2
查询从下标index1到index2的数据。-1代表最后一个。
lset key index newvalue
更新下表为index的数据。
sort key
正序排列输出。但是只能对数值进行排序,redis会先将字符串常识转成double类型,然后排序,如果是字符,则或报错。
sort key desc
反序排列输出。
llen key
显示数据数量
linsert key before oldvalue newvalue
在oldvalue前增加newvalue
linsert key after oldvalue newvalue
在oldvalue后增加newvalue,注意oldvalue对应的是数据,不是下标。
set集合
set是无序集合,不允许重复。
sadd key v1 v2 ...
添加成员。
smembers key
显示所有成员。
srandmember key num
随机显示num个数据,可以用于抽奖。
scard key
随机弹出数据。
sismember key value
判断value是否存在在key中
srem value
删除成员。
smove key1 key2 value
从key1中弹出数据value,并压入key2中。
sdiff key1 key2 ...
取key1中不存在在后面的集合中的数据,差集
sinter key1 key2 ...
取所有集合中相同的数据,交集
sunion key1 key2 ...
去所有集合中的数据,并集。
zset(sorted set)有序集合
zset和set一样也是集合,不允许重复。zset中的每个元素都会关联一个double类型的分数(score),就是通过分数为集合中的成员排序。分数可以重复,添加时,如果成员重复,则直接覆盖。排序默认采用的升序。查询时,如果按照分数筛选,分数可以通过增加(,表示不包含,即(min max表大于min小于max。
zadd key score1 value1 score2 value2 ...
添加成员。
zrem key value1 value2 ...
删除成员.
zscore key value
显示某成员的分数。
zrank key value
显示某成员的名次。
zrevrank key value
显示某成员倒叙的名次。
zcard key
显示有几个成员
zcount key min max
显示分数在min到max中的有几个,可以添加(。
zrange key index1 index2
按顺序显示从index1到index2的数据。
zrevrange key index1 index2
倒叙显示从index1到index2的数据
zrange key index1 index2 withscores
按顺序带分数显示从index1到index2的数据。
zrangebyscore key min max limit index num withscores
将分数在min到max之间的按顺序显示,可以添加(。limiit表示按照获取的数据顺序,从index下标开始取num,类似于实现了分页。可以不带limit子句,这样就是将查询的内容全部显示。withscores也是可以选择使用,带上表示同时显示分数。
zrevrangebyscore key max min limit index num withscores
倒叙到分数显示,同上,可以不带limit子句。withscores也是可以选择使用,带上表示同时显示分数。