redis具体详细命令可以去官方去查
官方网站: https://redis.io/
中文网站: http://redis.cn/
查看命令: http://redis.cn/commands.html
我这里只是自己记一下常用的,不常用的请到官方去查
# 启动redis
redis-server 目录/redis.conf
# 连接到redis
redis-cli -p 6379
# 以下redis命令不区分大小写
# 连接上之后如果有密码的话输入密码
auth password
# 删除所有数据库里面的所有数据,注意不是当前数据库,而是所有数据库
flushall
# 删除当前数据库里面的所有数据
flushdb
# 查看所有的key值
keys *
String字符串类型
# 存储key值
set key value
# 获取key值
get key
# 将当前数据库的 key 移动到给定的数据库 db 当中
move key db
# 判断是否此key值存在,如果存在是1,否则返回0
exists key
# 设置到期时间,按秒来计时
expire key 10
# 查看key的到期时间,如果为-2则代表已经没有了
ttl key # 秒
pttl key # 毫秒
# 查看key值的类型
type key
# 往key值后追加value值
append key value
# 把key值加1,如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0
incr key
# 把key值减1,如果key不存在,那么在操作之前,这个key对应的值会被置为0
decr key
# 将key对应的数字增加num,如果key不存在,操作之前,key就会被置为0
incrby key num
# 将key对应的数字减少num,如果key不存在,操作之前,key就会被置为0
decrby key num
# 获取存储在key值上指定位置的字符串
getrange key start end
# 设置key和值,再设置上过期时间(秒)
setex key time value
# 如果key值不存在则设置为value,如存在则不设置(在分布式锁中常用)
setnx key value
# 一次可以设置多个key value值
mset key value [key value]
# 一次获取多个key值
mget key [key]
# 一次设置多个值,规则和setnx相同
msetnx key value [key value]
# 先获取再设置这个值
getset key value
List类型
# 往key里存值,可存储相同的值
lpush key value [value ...]
# 获取key里的值,end为-1时查出所有
lrange key start end
# 和lpush插入的位置是相反的
rpush key value [value ...]
# 从左或从右移出一个值
lpop key
rpop key
# 获取key中的第index位置的值
lindex key index
# 查询key的数据长度
llen key
# 从列表中删除元素,例:lrem list 1 two
lrem key count value
# 从key列表中截取start到stop位置的数据
ltrim key start stop
# 从list1中移除一个值添加到list2这个列表中
rpoplpush list1 list2
# 设置指定下标中的值,如果没有key的值则设置不成功
lset key index value
# 往数组的value位置前面或后面插入new-value值
linsert key before|after value new-value
Set集合(无序不重复集合)
# 往集合里添加值
sadd key value [value ...]
# 查看集合里的数据
smembers key
# 判断集合中的值是否存在,如果存在返回1,如果不存在返回0
sismember key value
# 获取集合的长度
scard key
# 删除集合中的值
srem key value [value ...]
# 从集合中随机获取几个值
srandmember key count
# 随机移除集合里的值
spop key
# 移动集合1里的value值到集合2里
smove key1 key2 value
# 对比key1集合中不在key2集合中的值(差集)
sdiff key1 key2
# 对比key1集合中也在key2集合中的值(交集)
sinter key1 key2
# 并集获取两个集合中的值
sunion key1 key2
Hash(哈希)
值是Map集合,key-<key-value>
# 往key中存储字段跟值
hset key field value
# 获取key中存储的字段的值
hget key field
# 往key中存储多个字段跟值
hmset key field value [field value ...]
# 获取key中多个字段的值
hmget key field [field ...]
# 获取key中所有的值
hgetall key
# 删除key中对应的字段值
hdel key field [field ...]
# 获取长度
hlen key
# 判断是key中的字段值是否存在
hexists key field
# 获取key中所有的字段值
hkeys key
# 获取key中所有的值
hvals key
# 把值加num
hincrby key field num
# 把值减num
hdecrby key field num
# 请看上面的setnx
hsetnx key feild value
zset有序集合
# 排序-inf最小+inf最大,也就是所有的排序
zrangebyscore key -inf +inf
...
geospatial地理位置
# 添加位置信息
geoadd key lng lat name [lng lat name ...]
geoadd china:city 39.90 116.40 beijing
geoadd china:city 31.23 121.47 shanghai
geoadd china:city 29.53 106.50 chongqing
geoadd china:city 22.52 114.05 shengzheng 30.24 120.16 hangzhou 34.26 108.96 xian
# 获取经纬度
geopos china:city beijing chongqing
# 查看beijing和shanghai的距离(km)
# m 表示米(默认)
# km 千米
# mi 英里
# ft 英尺
geodist china:city beijing shanghai km
# 查询这个经纬度半径内的
georadius china:city 110 30 半径 km
# 根据这个城市的位置来查询指定的范围的数据
georadiusbymember china:city beijing 1000 km
bitmaps位存储
# 存储值只能是0和1
setbit day 1 0
setbit day 2 1
setbit day 3 1
setbit day 4 0
setbit day 5 0
# 获取3位置的值
getbit day 3
# 总共的为1的值
bitcount day
事物
开启事物(multi)
命令入队(…)
执行事物(exec)
取消事物(discard)
watch(监视)
unwatch(解锁监视)
# 可以监视key值是否修改(属于乐观锁)
watch key
# 这里增加事物去给key去存值和其它数据
multi
....
# 如果有另外一个线程修改了key值,这里执行exec会执行失败
exec
主从配置
# 查看信息,可以查看是主还是从,和相关信息
info replication
# 在从机上配置哪个是主,主不用配置,redis默认启动就是主,只要配置从机即可
# 也可以在从机的配置文件中配置replicaof masterip masterport这条配置,启动的后也就自动连上master
# 默认情况主是可以写,从是不允许写,只能读
# 主从配置最好在配置文件中配置
slaveof ip port
# 自己当主,如果主断掉这句话可以让自己成为主
slaveof no one