Redis命令整理

来源:互联网 发布:硬盘raw格式化软件 编辑:程序博客网 时间:2024/04/30 10:11
#设置键值对,key为键名,value为存储的值
set key value
#设置键值对,当键不存在的时候
setnx key value
set key value nx
#设置键值对,当键存在的时候
set key value xx
#设置键值的有效时间
setex key 10 value//有效期为10秒(单位为秒,不设置时间则会报错)
#获取指定键的值
get key
#替换字符串
setrange key 5 yourvalue//设置从下标为5的地方开始替换成yourvalue,如果原字符串长度大,那么久替换需要的长度,原字符串后面的保留,否则全部替换完
#设置多个值,返回0表示所有都不成功
mset key1 value key2 value key3 value......
#获得多个值
mget key1 key2 key3......
#键中对应的值自加一
incr key 
#键中的值加上指定的值
incrby key addvalue//addvalue为指定加上的值
#键中对应的值自减一
decr key
#键中对应的值减去指定的值
decrby key decvalue //decvalue指定减去的值
#为键设置新值并返回原来的值
getset key value
#给字符串追加值
append key appendvalue
#获取指定key value的长度
strlen key
#设置多个不存在的键值,有一个存在则全部不成功
msetnx key1 value key2 value
#获取key中指定范围的值
getrange key 0 1//获取索引0到1的字符
#########################hashes##########################
#设置hash的field为指定的值,如果key不存在就创建
hset user name gutao //设置key为user的,field为name的值为gutao
#获取key对应的filed的值
hget user name
#设置hash的不存在field的属性情况下设置filed的值
hsetnx user age 21 //设置key为user的键的filed的为age的值为21
#判断键是否存在指定的属性,有返回1,没有返回0
hexist key filed
#判断键对应的所有filed个数
hlen key
#同时设置多个filed
hmset user1 name nibei age 22 sex 0//设置user1的name为nibei age为22 sex为0
#获取所有的filed键值
hkeys user
#获取指定hash所有filed的储存值
hvals user 
#获得指定hash所有的filed以及存储的值
hgetall user
#使得指定的hash的filed的值加上指定数值
hincrby user age 5
#删除hash指定的filed
hdel user filed//删除hash为user的名为filed的属性
####################################lists###########################
#从链表头中压入一个元素(这里list是自己定义的名字)
lpush list "hello" //向list1中压入一个值为hello的元素
#获取list中所有元素
lrange list 0 -1 //0表示头第一个元素,-1表示尾部第一个元素
#在list中的指定元素的前面加元素
linsert list before sourceValue addValue //sourceValue:指定的元素,addVlaue:添加的元素
#从list的尾部压入一个元素
rpush list addValue
#设置list指定索引处的值
lset list 0 resetValue //这里0是指索引为0的元素 ,resetValue:要设置的值
#从list中删除n个和value相同的元素(n<0从尾部删-n个,n=0全部删)返回的是删除的个数
lrem list 1 value
#删除list中除指定范围内的所有元素
ltrim list n1 n2 (n1到n2范围内的,代表索引,如果n1>n2则删除全部)
#头部删除一个元素,返回删除的元素
lpop list 
#删除一个尾部元素,返回删除的元素
rpop list 
#从第一个list的尾部删除一个元素放到第二个list的头部,返回删除的元素
rpoplpush list list1
#返回list指定索引得值
lindex list 0
###################################set#################################
#向set中添加元素,成功返回1,不成功返回0,不能重复添加和java中的set一样
sadd myset value
#查看set中的元素
smembers mytest
#删除set的某个元素
srem myset value
#set弹出一个元素,因为set是无序的所以弹出也是随机的,返回弹出的值
spop myset
#返回所有给定key与第一个key的差集
sdiff myset1 myset2 
#返回所有给定key与第一个key的差集,并添加知道myset5中
sdiffstore myset5 myset3 myset4
#返回myset3和myset4交集
sinter myset3 myset4
#返回myset3和myset4交集,并添加到myset5
sinterstore myset5 myset3 myset4
#取并集
sunion myset3 myset4
#取并集,并放到myset6中,返回元素个数
sunionstore myset6 myset3 myset4
#从第一个key对应的set中移除member并添加到第二个set中
smove myset3 myset4 value
#返回名称为key的set的元素个数
scard myset3
#测试member是否是名为key的set的元素,有返回1,没有返回0
sismember myset value
#所以返回一个名为key的set的元素
srandmember key 
###############################sorted sets##########################
#添加元素
zadd myzset1 1 one//1为score ,one为value
#查看所有元素,把包括顺序
zrange myzset 0 -1 withscores
#删除名为key的zset的元素member
zrem myzset value
#如果在名为key的zset中已存在元素member则在元素的score上添加increment,
#否则添加该元素,其score为increment
zincrby myzset 2 two //2为increment
#返回名为key的zset的member的排名(按score从小到大排序)即下标
zrank myzset1 value
#返回名为key的zset的member的排名(按score从大到小排序)即下标
zrevrank myzset1 value
#倒序返回zset的所有元素
zrevrange myzset 0 -1
#按score取,取出范围内的(取出score在1到3之间的,包含首尾)
zrevrange myzset1 1 3 withscores
#返回集合中score在给定区间的数量(返回score在1到3之间的数量)
zcount myzset1 1 3
#返回集合总数
zcard myzset1 
#删除范围内的数据,按照索引删除,第一个参数是开始索引,第二个参数结束的索引,包含首尾
zremrangebyrank myzset1 1 2
#删除指定范围内的数据,按照score删除,第一个参数是开始的score值,第二个参数结束的score,包含首尾
zremrangebyscore myzset1 2 4
#查看当前数据库所有的key
keys *
#判断当前数据库是否存在某个键,存在为1,不存在为0
exists keyname
#删除某个键,成功为1
del keyname
#设置过期时间
expire keyname time
#查看还有多久过期为负数的时候说明已经过期
ttl keyname
#选择数据库,默认是0,一共有0~15,共有16个数据库
select 0
#把一个key移动到另外一个数据库
move keyname 1
#取消过期时间
persist keyname
#随机返回数据库中的一个键
randomkey
#重命名
rename oldkeyname newkeyname
#返回键值的类型
type keyname
#测试连接是否存活
ping
#打印
echo yourcomments
#返回数据库的key数量
dbsize
#查看服务器信息
info
#查看配置文件信息(*可以是相应的keyname)
config get *
#清空当前数据库
flushdb
#清空所有数据库
flushall


####################################加操作密码#######################
#打开注释requirepass foobared
#foobared是密码,自己根据自己需要设置相应的密码


####################################主从复制#########################
#进入bin目录下的.conf文件修改如下
1.打开注释# slaveof <masterip> <masterport>
两个参数分别为主机的ip和端口,这个操作是在从服务器上修改的redis的配置文件
2.打开注释# masterauth <master-password>
授权,后面是master的密码


###################################简单的事务处理######################
#下面做一个小事例
set age 10
get age 
#这里可以得到age为10
#下面这样
multi
set age 20
set age 30
#这里可以看到是没有执行的,multi是开启事务,下面的命令在执行exec之前全部放到队列中
exec
#会发现全部执行了
get age得到的是30
#########这里要注明一下,redis的事务是不会回滚的###############
#下面看一个事列
multi 
incr age
incr name
exec
#这里会发现age加1了但是name没有,因为name为string,但是并没有回滚,age还是加了1,
#在redis中是目前版本没有回滚的,它的只是简单的事务处理


###################################乐观锁############################
#开启乐观锁,对指定的key进行监控
watch keyname
#当watch之后开启multi(事务),在另外的session上进行了修改
#回到当前session再修改是会报nil,因为当前版本不是最新版本
#如果连接断开后,监控和事务都会被自动清除,另外exec,discard,unwatch命令都会清除连接中的所有监视


###################################持久化设置##########################
#有两种持久化设置
1.snapshotting(快照)默认方式
2.Append-only file(缩写aop)的方式
#######################################
1:save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
   save 300 10 #300秒内如果超过10个key被修改,则发起快照保存
   save 60 10000 #60秒内如果超过10000个key被修改,发起快照保存
数据以二进制的形式保存在了bin下的dump.rdb文件中
2:aof方式,aof比快照方式有更好的持久化性,是由于在使用aof时,
            redis会将每个收到的写命令都通过write函数追加到文件中
            当redis重启时会通过重新执行文件中的保存的命令在内存中
            重建期整个数据库的内容
    打开注释appendonly yes//启用aof持久化方式
    appendfsync always //收到写命令就立即写入磁盘,最慢,但是完全保证了持久化
    appendfsync everysec //每秒写入磁盘一次,在性能和持久化上做了很好的折中
    appendfsync no //完全依赖os,性能最好,持久化没保证
    # The name of the append only file (default: "appendonly.aof")


######################################虚拟内存的使用####################
#把不经常访问的数据从内存交换到磁盘上,redis是内存数据库,这样可以提高数据库容量
#使用虚拟内存把那些把经常访问的数据交换到磁盘上





1 0