Redis基础使用

使用命令
reids的数据使用Key-Value的模式存在的,Key是字符串,value有5个数据格式

image.png

  • String字符串操作
SET      key  value                            //设置字符串键值对
MSET     key  value [key value ...]            //批量设置字符串键值对
SETNX    key  value                            //设置字符串键值对,当key存在就不做处理直接返回0,否则跟set命令一样
GET      key                                   //获取一个字符串键值
MGET     key  [key ...]                        //批量获取字符串键值
DEL      key  [key ...]                        //删除一个键
EXPIRE   key  seconds                          //设置一个键的过期时间(秒)

# 操作命令
INCR     key                                    //将key中储存的数字值加1
DECR     key                                    //将key中储存的数字值减1
INCRBY   key  increment                         //将key所储存的值加上increment
DECRBY   key  decrement                         //将key所储存的值减去decrement
  • Hash
HSET     key  field  value                       //设置哈希表key中的字段field的值设为value
HSETNX   key  field  value                       //设置哈希表key中的字段field的值设为value,当key存在不做处理,返回0,否则跟hset命令一样
HMSET    key  field  value [field value ...]     //批量设置哈希表key中的字段field的值设为value
HGET     key  field                              //获取哈希表key对应的field字段的值
HMGET    key  field  [field ...]                 //批量获取哈希表key中多个field字段的值
HDEL     key  field  [field ...]                 //删除哈希表key中的field字段
HLEN     key                                     //返回哈希表key中field的数量
HGETALL  key                                     //返回哈希表key中所有的键值
HINCRBY  key  field  increment                   //为哈希表key中field键的值加上增量increment
  • List
LPUSH   key  value [value ...]                   //将一个或多个值value插入到key列表的表头(最左边)
RPUSH   key  value [value ...]               //将一个或多个值value插入到key列表的表尾(最右边)
LPOP    key                            //移除并返回key列表的头元素
RPOP    key                            //移除并返回key列表的尾元素
LRANGE  key  start  stop                   //返回列表key中指定区间内的元素,区间以偏移量start和stop指定
BLPOP   key  [key ...]  timeout                  //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
BRPOP   key  [key ...]  timeout                  //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout=0,一直阻塞等待
  • Set
SADD         key  member  [member ...]            //往集合key中存入元素,元素存在则忽略,key不存在则新建
SREM         key  member  [member ...]            //从集合key中删除元素
SMEMBERS     key                                  //获取集合key中所有元素
SCARD        key                                  //获取集合key的元素个数
SISMEMBER    key  member                          //判断member元素是否存在于集合key中
SRANDMEMBER  key  [count]                         //从集合key中选出count个元素,元素不从key中删除
SPOP         key  [count]                         //从集合key中选出count个元素,元素从key中删除

# 操作命令
SINTER       key  [key ...]                       //交集运算
SINTERSTORE  destination  key  [key ..]           //将交集结果存入新集合destination中
SUNION       key  [key ..]                        //并集运算
SUNIONSTORE  destination  key  [key ...]          //将并集结果存入新集合destination中
SDIFF        key  [key ...]                       //差集运算
SDIFFSTORE   destination  key  [key ...]          //将差集结果存入新集合destination中
  • Sorted-Set
ZADD         key score member [[score member]...]  //往有序集合key中加入带分值元素
ZREM         key member [member ...]               //从有序集合key中删除元素
ZSCORE       key member                            //返回有序集合key中元素member的分值
ZINCRBY      key increment member                  //为有序集合key中元素member的分值加上increment 
ZCARD        key                                   //返回有序集合key中元素个数
ZRANGE       key start stop [WITHSCORES]           //正序获取有序集合key从start下标到stop下标的元素
ZREVRANGE    key start stop [WITHSCORES]           //倒序获取有序集合key从start下标到stop下标的元素

# 操作命令
ZUNIONSTORE  destkey numkeys key [key ...]         //并集计算
ZINTERSTORE  destkey numkeys key [key ...]         //交集计算

三种特殊的数据类型

# 存
geoadd cities:locations 116.28 39.55 beijing
geoadd cities:locations 117.12 39.08 tianjin 
# 取
geopos cities:locations beijing
# 计算距离
geodist cities:locations tianjin shijiazhuang
geodist cities:locations tianjin shijiazhuang km
#如果不存在返回nil
geodist cities:locations beijing zhengzhou
  • Hyperloglog,基数统计算法,用来做用户访问统计,去重
PFadd mykey a b c d e
PFCOUNT mykey
PFadd mykey2 a b c d e f
PFMERGE mykey3 mykey mykey2
PFCOUNT mykey3
  • Bitmap,记录只有两个状态的情况,如365天的打卡
# 第一个是key,第二个是value,只能是0/1,默认0
setbit sign 0 1
setbit sign 1 0
setbit sign 2 0
getbit sign 0    #结果 1
getbit sign 4    #结果 0
# 统计为1的个数
bitcount sign

事务

multi
set k1 v1
set k2 v2
get k1
set k3 v3
# 执行事务
exec
# 放弃事务
DISCARD

Watch,这是一个redis自动的功能,可以用来实现乐观锁的功能

# 监听值
set num 100
watch num
multi
set num 200
# 执行事务,这时如果num已经被另一个线程修改了,事务会报错
# 如果另一个线程只是访问,没有修改,事务会提交
exec
原文地址:https://www.cnblogs.com/pengdt/p/13062387.html