Redis系列1——数据类型和常用数据操作

2023-11-18

一、redis基础知识

客户端和服务器命令:

​ 默认端口号6379

服务器命令:

​ redis-server redis.windows.conf
设置服务一直开启,首先进入redis安装目录,然后执行:
redis-server --service-install redis.windows.conf --loglevel verbose。
使用:net start redis开启服务。

客户端命令:

​ redis-cli

一个redis.windows.conf配置文件,就是一个redis服务器。需要启动多个服务器时,只需修改配置文件的名称,再使用redis-server命令即可。

redis和memcache相比的独特之处
  1. redis可以用来存储(storge),有持久化的功能(是可以存储到硬盘中),而memcached用来做缓存(cache)。
  2. redis存储的数据有结构;对于memcache来说,存储的数据只有一种数据类型——字符串,而redis则可以存储字符串,链表,哈希结构,集合,有序集合。,
redis目录下的重要文件的意义
  • redis-benchmark:性能测试工具
  • redis-check-dump:日志文件检测工具(比如断电造成日志损坏,可以检测并修复。)
  • redis-check-dump:快照文件检测工具,效果同上。
  • redis-cli:客户端。
  • redis-server:服务端
  • redis.windows.conf:配置文件

三:基础命令

  • keys:返回所有的key
  • key list:返回名以list开头的所有key
  • exists list1:判断名为list1的key是否存在,存在返回1,不存在返回0
  • del list1:删除一个键list1
  • exprice list1 10:设置键名为list1的过期时间为10秒后
  • ttl list1:查看键名为list1的过期时间,若为-1,表示以过期或永不过期
  • move age 1:将键名为age的转移到1数据库中
  • select 1:表示进入1数据库,默认在0中,一共有16个,从0到15
  • persist age:移除age的过期时间。
  • flushdb:删除所有的数据,清除当前所在库的所有数据。
  • flushall:清空所有数据。
(一).字符串类型
存命令 取命令
mset mget
setnx msetnx
incr decr
incrby decrby
setrange getrange
set get
  1. set方法:设置key对应的值为string类型的value,如果该key已经存在,则覆盖,所以在redis中key唯一。
127.0.0.1:6379> set name lijie
OK

get:根据key获取value的值

127.0.0.1:6379> get name
"lijie"

setnx:设置一个不存在的字符串,返回0表示设置失败,已存在。返回1表示设置新值成功,nx是not exit的意思。

127.0.0.1:6379> setnx name zs
(integer) 0
127.0.0.1:6379> setnx age 20
(integer) 1

setex:设置字符串,同时设置有效期

127.0.0.1:6379> setex lvjia 10 'jia'
OK
(立即查询)
127.0.0.1:6379> get lvjia
"jia"
(10秒后启动)
127.0.0.1:6379> get lvjia
(nil)

setrange:替换字符串

setrange替换什么,从哪里开始(0),替换成什么

127.0.0.1:6379> set email lvjia@sina.com
OK
127.0.0.1:6379> get email
"lvjia@sina.com"
127.0.0.1:6379> setrange email 6 163.com
(integer) 14
127.0.0.1:6379> get email
"lvjia@163.comm"

msetnx:一次设置多个不存在的key-value,返回1表示全部设置成功,返回0表示全部失败。

127.0.0.1:6379> msetnx name3 kk name4 mm name2 lvjia
(integer) 1
127.0.0.1:6379> get name3
"kk"
127.0.0.1:6379> get name2
"lvjia"
127.0.0.1:6379> get name4
"mm"
127.0.0.1:6379> msetnx name3 cc name4 dd
(integer) 0
getset:获取原值,并设置新值
127.0.0.1:6379> getset name4 UU
"mm"
127.0.0.1:6379> get name4
"UU"

getrange:获取key对应value的子字符串

127.0.0.1:6379> getrange email 0 4
"lvjia"

mget:一次获取多个key对应的value值,不存在返回nil

127.0.0.1:6379> mget name1 name2 name3 name4 name5 name6
1) (nil)
2) "lvjia"
3) "kk"
4) "UU"
5) (nil)
6) (nil)

incr:对key对应的value做加1操作,并返回新值

127.0.0.1:6379> get age
"21"
127.0.0.1:6379> incr age
(integer) 22

incrby:与incr类似,加指定值,key不存在的时候会设置key,并认为该key原来的value=0

127.0.0.1:6379> get age
"22"
127.0.0.1:6379> incrby age 9
(integer) 31
127.0.0.1:6379> get height
(nil)
127.0.0.1:6379> incrby height 10
(integer) 10
127.0.0.1:6379> get height
"10"

decr:对key对应的value做减1操作。

127.0.0.1:6379> get height
"10"
127.0.0.1:6379> decr height
(integer) 9

decrby:对key对应的value减去指定的值

127.0.0.1:6379> get height
"9"
127.0.0.1:6379> decrby height 3
(integer) 6
127.0.0.1:6379> decrby height -3
(integer) 9

append:对key对应的value字符串追加,返回新字符串的长度

127.0.0.1:6379> get name
"lijie"
127.0.0.1:6379> append name ML
(integer) 7
127.0.0.1:6379> get name
"lijieML"

strlen:获取key对应value的长度

127.0.0.1:6379> get name
"lijieML"
127.0.0.1:6379> strlen name
(integer) 7

del:删除指定key,可一下指定多个,会返回删除成功的条数

127.0.0.1:6379> get name
"lijieML"
127.0.0.1:6379> del age name
(integer) 2
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379> del name1
(integer) 0
(二).hash类型

Redis hash是一个string类型的filed和value的映射表。Hash特别适合存储对象。相比较于对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便存取整个对象。

hset:设置hash field为指定值,如果key不存在,则先创建,key存在则替换,如果不存在时返回1,存在时返回0。

127.0.0.1:6379> hset user:001 name zs
(integer) 1
127.0.0.1:6379> hset user:001 name lvjia
(integer) 0

hget:获取指定field字段的值

127.0.0.1:6379> hget user:001 name
"lvjia"

hsetnx:设置hash field为指定值,如果key不存在,则先创建,如果存在则返回0,表示设置失败。

127.0.0.1:6379> hsetnx user:001 name dachang
(integer) 0
127.0.0.1:6379> hsetnx user:001 age 20
(integer) 1

hmset:同时设置hash的多个file

127.0.0.1:6379> hmset user:002 name lvjia age 20
OK
127.0.0.1:6379> hget user:002 name
"lvjia"
127.0.0.1:6379> hget user:002 age
"20"

hmget:获取多个指定的hash field,必须指定获取的key的名称

127.0.0.1:6379> hmget user:002 name age
1) "lvjia"
2) "20"

hincrby:对hash field加上指定的值

127.0.0.1:6379> hget user:002 age
"20"
127.0.0.1:6379> hincrby user:002 age 5
(integer) 25
127.0.0.1:6379> hincrby user:002 age -4
(integer) 21

hexists:测试指定的field是否存在,返回1表示存在,返回0表示不存在。

127.0.0.1:6379> hexists user:002 name
(integer) 1
127.0.0.1:6379> hexists user:002 age
(integer) 1
127.0.0.1:6379> hexists user:002 height
(integer) 0

hdel:返回指定hash的field的数量,返回1表示删除成功,0表示删除失败

127.0.0.1:6379> hdel user:001 age
(integer) 1
127.0.0.1:6379> hdel user:001 address
(integer) 0

hkeys:返回hash的所有field

127.0.0.1:6379> hkeys user:001
1) "name"
127.0.0.1:6379> hkeys user:002
1) "name"
2) "age"

hvals:fanhuihash的所有value

127.0.0.1:6379> hvals user:001
1) "lvjia"
127.0.0.1:6379> hvals user:002
1) "lvjia"
2) "21"
(三).list类型

list是一个链表结构,主要功能是push、pop,获取一个范围的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop这些操作链表的头部或者链表尾部添加元素,这样list既可以为栈,又可以作为队列。

  1. lpush:在key对应list的头部添加字符串元素,返回list元素中的个数

    127.0.0.1:6379[1]> lpush list1 "hello"
    (integer) 1
    127.0.0.1:6379[1]> lpush list1 "word"
    (integer 2
    
  2. lrange:获取list中的元素,后边跟两个参数分别代表起始位置和结束位置。

    127.0.0.1:6379[1]> lrange list1 0 -1
    1) "word"
    2) "hello"
    
  3. rpush:在key对应的list尾部添加元素

    127.0.0.1:6379[1]> rpush list2 10
    (integer) 1
    127.0.0.1:6379[1]> rpush list2 11
    (integer) 2
    127.0.0.1:6379[1]> rpush list2 12
    (integer) 3
    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "10"
    2) "11"
    3) "12"
    
  4. linsert:在key对应list的特定位置前或者后添加字符串

    127.0.0.1:6379[1]> linsert list2 before 11 10.5
    (integer) 4
    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "10"
    2) "10.5"
    3) "11"
    4) "12"
    127.0.0.1:6379[1]> linsert list2 before 1 2
    (integer) -1
    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "10"
    2) "10.5"
    3) "11"
    4) "12"
    
  5. lset:更改list中指定下标的元素,返回ok表示设置成功

    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "10"
    2) "10.5"
    3) "11"
    4) "12"
    127.0.0.1:6379[1]> lset list2 1 10.00
    OK
    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "10"
    2) "10.00"
    3) "11"
    4) "12"
    127.0.0.1:6379[1]> lset list2 10 10.00
    (error) ERR index out of range
    
  6. lrem:从key对应list中删除n个和value相同的元素(n<0从尾部删除,n=0全部删除)

    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "10.00"
    2) "11"
    3) "12"
    127.0.0.1:6379[1]> lrem list2 2 10.00
    (integer) 1
    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "11"
    2) "12"
    
  7. ltrim:保留list中指定范围的数据全部删除

    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "11"
    2) "12"
    3) "10"
    4) "20"
    5) "30"
    127.0.0.1:6379[1]> ltrim list2 1 2
    OK
    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "12"
    2) "10"
    
  8. lpop:从list的头部删除元素,并返回该元素

    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "12"
    2) "10"
    127.0.0.1:6379[1]> lpop list2
    "12"
    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "10"
    
  9. rpop:从list尾部删除元素,并返回该元素

  10. rpoplpush:从第一个list的尾部删除元素,并添加到第二个list的头部。

    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "10"
    127.0.0.1:6379[1]> lrange list1 0 -1
    1) "word"
    2) "hello"
    127.0.0.1:6379[1]> rpoplpush list1 list2
    "hello"
    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "hello"
    2) "10"
    127.0.0.1:6379[1]> lrange list1 0 -1
    1) "word"
    
  11. lindex:返回名称为key的list中的index位置的元素

    127.0.0.1:6379[1]> lrange list2 0 -1
    1) "hello"
    2) "10"
    127.0.0.1:6379[1]> lindex list2 1
    "10"
    
  12. llen:返回指定key对应list的长度

    127.0.0.1:6379[1]> lrange  list2 0 -1
    1) "hello"
    2) "10"
    127.0.0.1:6379[1]> llen list2
    (integer) 2
    
(四).set类型

Set是一个string类型的无序集合,不允许重复。Set是通过hash table实现的。添加、删除、查找复杂度都是0/1。对集合我们可以取并集、交集、差集。

  1. sadd:向key对应的set集合中添加元素,返回1表示添加成功,返回0表示失败。

    127.0.0.1:6379[2]> sadd myset1 lvjia
    (integer) 1
    127.0.0.1:6379[2]> sadd myset1 lvjia
    (integer) 0
    127.0.0.1:6379[2]> sadd myset1 dachang
    (integer) 1
    
    
  2. smembers:查看集合中的元素

    127.0.0.1:6379[2]> smembers myset1
    1) "dachang"
    2) "lvjia"
    
  3. srem:删除key对应set集合中的元素,返回1表示删除成功,0表示失败。

    127.0.0.1:6379[2]> smembers myset1
    1) "dachang"
    2) "lvjia"
    127.0.0.1:6379[2]> srem myset1 two
    (integer) 0
    127.0.0.1:6379[2]> srem myset1 dachang
    (integer) 1
    
  4. spop:随即删除set中的一个元素并返回该元素

    127.0.0.1:6379[2]> spop myset1
    "dachang"
    127.0.0.1:6379[2]> spop myset1
    "haha"
    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    
  5. sdiff:返回给定set集合的差集(以前边的set集合为标准)

    127.0.0.1:6379[2]> smembers myset2
    1) "hhaha"
    2) "haha"
    3) "wahaha"
    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    127.0.0.1:6379[2]> sdiff myset2 myset1
    1) "hhaha"
    2) "haha"
    
  6. sdiffstore:返回所有给定的set集合的差集,并将差集添加到另一个集合中。

    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    127.0.0.1:6379[2]> smembers myset2
    1) "hhaha"
    2) "haha"
    3) "wahaha"
    127.0.0.1:6379[2]> sdiffstore myset3 myset1 myset2
    (integer) 1
    127.0.0.1:6379[2]> smembers myset3
    1) "lvjia"
    
  7. sinter:返回所有给定集合的交集。

    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    127.0.0.1:6379[2]> smembers myset2
    1) "hhaha"
    2) "haha"
    3) "wahaha"
    127.0.0.1:6379[2]> sinter myset1 myset2
    1) "wahaha"
    
  8. sinterstore:返回所有给定集合key的交集,并将结果存为另一个key

    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    127.0.0.1:6379[2]> smebers myset2
    (error) ERR unknown command 'smebers'
    127.0.0.1:6379[2]> smembers myset2
    1) "hhaha"
    2) "haha"
    3) "wahaha"
    127.0.0.1:6379[2]> sinterstore myset4 myset1 myset2
    (integer) 1
    127.0.0.1:6379[2]> smembers myset4
    1) "wahaha"
    
  9. sunion:返回所有给定集合的并集。

    127.0.0.1:6379[2]> sunion myset1 myset2
    1) "hhaha"
    2) "haha"
    3) "lvjia"
    4) "wahaha"
    
  10. sunionstore:返回所有给定集合的并集,并将结果存入另一个集合。

    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    127.0.0.1:6379[2]> smembers myset2
    1) "hhaha"
    2) "haha"
    3) "wahaha"
    127.0.0.1:6379[2]> sunionstore myset5 myset1 myset2
    (integer) 4
    127.0.0.1:6379[2]> smembers myset5
    1) "hhaha"
    2) "haha"
    3) "lvjia"
    4) "wahaha"
    
  11. smove:从第一个集合中移除元素并将该元素添加到另一个集合中。

    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    127.0.0.1:6379[2]> smembers myset2
    1) "hhaha"
    2) "haha"
    3) "wahaha"
    127.0.0.1:6379[2]> smove myset2 myset1 wahaha
    (integer) 1
    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    
  12. scard:返回set集合中元素的个数。llen(list),strlen(str),hlen(hash)

    127.0.0.1:6379[2]> smembers myset2
    1) "hhaha"
    2) "haha"
    127.0.0.1:6379[2]> scard myset1
    (integer) 2
    
  13. sismember:测试member元素是否是名为key的set集合,返回1表示是,返回0表示不是。

    127.0.0.1:6379[2]> smembers myset1
    1) "wahaha"
    2) "lvjia"
    127.0.0.1:6379[2]> sismember myset1 two
    (integer) 0
    127.0.0.1:6379[2]> sismember myset1 wahaha
    (integer) 1
    
  14. srandmember:随即返回set集合中的几个元素,但不删除这几个元素

127.0.0.1:6379[2]> srandmember myset1
"wahaha"
127.0.0.1:6379[2]> smembers myset2
1) "hhaha"
2) "haha"
127.0.0.1:6379[2]> srandmember myset1 2
1) "lvjia"
2) "wahaha"
(五).sorted set类型

sorted set是set的一个升级版,它在set的基础上增加了一个顺序属性,这一属性在添加元素的时候可以指定,每次指定后,zset会自动重新按新的值挑战顺序。可以理解为有两列的MySQL表,一列存value,一列存顺序。操作key理解为zset的名字。

  1. zadd:向有序集合zset中添加元素并指定顺序,如果该元素已存在就更新元素顺序。

    127.0.0.1:6379[3]> zadd myzset1 1 one
    (integer) 1
    127.0.0.1:6379[3]> zadd myzset1 2 two
    (integer) 1
    
  2. zrange:从zset集合中取元素,(withscores)输出元素顺序号

    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "one"
    2) "1"
    3) "two"
    4) "2"
    
  3. zrem:删除zset集合中指定的元素

    127.0.0.1:6379[3]> zrem myzset1 dachang
    (integer) 1
    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "one"
    2) "1"
    3) "lvjia"
    4) "5"
    
  4. zincrby:若zset中已经存在元素member、则该元素的score增加increment否则向该集合中添加该元素,其score的值为increment。

    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "one"
    2) "1"
    3) "lvjia"
    4) "5"
    127.0.0.1:6379[3]> zincrby myzset1 2 one
    "3"
    127.0.0.1:6379[3]> zincrby myzset1 2 one
    "5"
    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "lvjia"
    2) "5"
    3) "one"
    4) "5"
    
  5. zrank:返回zset中元素member的排名(score从小到大排序)即下标

    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "dachang"
    2) "1"
    3) "lvjia"
    4) "2"
    5) "one"
    6) "5"
    127.0.0.1:6379[3]> zrank myzset1 dachang
    (integer) 0
    127.0.0.1:6379[3]> zrank myzset1 lvjia
    (integer) 1
    
  6. zrevrank:返回zset集合中member元素的排名(按照score倒叙)即下标

    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "dachang"
    2) "1"
    3) "lvjia"
    4) "2"
    5) "one"
    6) "5"
    127.0.0.1:6379[3]> zrevrank myzset1 dachang
    (integer) 2
    
  7. zrevrange:从zset集合中倒叙(score倒叙)获取元素

    127.0.0.1:6379[3]> zrevrange myzset1 0 -1 withscores
    1) "one"
    2) "5"
    3) "lvjia"
    4) "2"
    5) "dachang"
    6) "1"
    
  8. zrangebyscore:从zset集合中根据score顺序获取元素

    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "dachang"
    2) "1"
    3) "lvjia"
    4) "2"
    5) "one"
    6) "5"
    127.0.0.1:6379[3]> zrangebyscore myzset1 4 5 withscores
    1) "one"
    2) "5"
    
  9. zcount:返回zset集合中score在给定区间的所有元素个数

    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "dachang"
    2) "1"
    3) "lvjia"
    4) "2"
    5) "one"
    6) "5"
    127.0.0.1:6379[3]> zcount myzset1 4 5
    (integer) 1
    
  10. zcard:返回zset集合中所有元素个数

    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "dachang"
    2) "1"
    3) "lvjia"
    4) "2"
    5) "one"
    6) "5"
    127.0.0.1:6379[3]> zcard myzset1
    (integer) 3
    
  11. zremrangebyrank:删除集合中排名(下标)在给定区间的元素。

    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "lvjia"
    2) "1"
    3) "dachang"
    4) "2"
    5) "haha"
    6) "3"
    127.0.0.1:6379[3]> zremrangebyrank myzset1 0 1
    (integer) 2
    127.0.0.1:6379[3]> zrange myzset1 0 -1 withscores
    1) "haha"
    2) "3"
    
  12. zremrangebyscore:删除集合中顺序(score值)在给定区间的元素

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis系列1——数据类型和常用数据操作 的相关文章

  • 在 MVC 框架中将 noSQL 和 ORM 结合起来用于实际案例应用程序

    一段时间以来 我一直在尝试将过去几年中读到的一些有关 noSQL couchDB mongoDB Redis 的 酷 东西投入实际使用 我非常习惯使用 Django 编写应用程序 并开始使用 Play 当 Java 是唯一可接受的部署选项
  • Cassandra cli:将十六进制值转换为人类可读的格式

    我开始于卡桑德拉 questions tagged cassandra 当我跑步时list or get命令在cassandra cli questions tagged cassandra cli 我得到这样的结果 default use
  • Firebase 数据库结构 - 需要建议

    我知道这个问题可能被视为基于意见的问题 但是我认为值得讨论正确构建数据库的方法 我在 Swift 中开发 iOS 应用程序 并决定使用 firebase 作为我的后端服务 让我们从应用程序描述开始 该应用程序旨在为图书阅读体验提供跟踪和社交
  • 是否有可嵌入的 Java 替代 Redis?

    根据这个线程 https stackoverflow com questions 3047010 best redis library for java 如果我想从Java中使用Redis Jedis是最好的选择 然而 我想知道是否有任何库
  • Spring Data Redis - Lettuce连接池设置

    尝试在 spring data redis 环境中设置 Lettuce 连接池 下面是代码 Bean LettuceConnectionFactory redisConnectionFactory GenericObjectPoolConf
  • 使用 NoSQL 文档存储数据库有哪些实际用例?

    在过去的几天里 我一直在阅读文档并观看特定于 Mongo DB 的截屏视频 我不知道像这样的解决方案何时会比典型的 pg 或 mysql 环境更好 具体来说 我的问题是在什么情况下 有用例就很好 你会选择 nosql 路线 Thanks 许
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • 在 aws-elasticache 上使用 memcached 或 Redis

    我正在 AWS 上开发一个应用程序 并使用 AWS elasticache 进行缓存 我对使用 memcached 或 redis 感到困惑 我阅读了有关 redis 3 0 2 更新以及它现在如何等同于 memchached 的文章 ht
  • 是否有 NoSQL 解决方案的比较(在某些情况下哪个更好?)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我在 Linux PHP 架构中构建基于密钥的归档应用程序时 我正在尝试了解有关 NoSQL 的更多信息 谁能解释一下主要解决方案
  • 无法启动redis.service:单元redis-server.service被屏蔽

    我在 ubuntu 16 04 上安装了 Redis 服务器 但是当我尝试使用启动redis服务时 sudo systemctl start redis 我收到消息 Failed to start redis service Unit re
  • 使用 Redis 命令 incr 和 expire 时的竞争条件

    根据redis文档 http redis io commands incr http redis io commands incr 在段落模式 速率限制器 2 较短的版本代码 value INCR ip IF value 1 THEN EX
  • 有没有办法在 ruby​​ 中重新定义 []=+

    我正在尝试编写一个简单的 DSL 针对 Redis 并且我想自己定义 I have def key val redis zadd name val key end 我想定义 def key val redis zincrby name va
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • 使用 Sentinels 升级 Redis 的最佳实践?

    我有 3 个 Redis 节点 由 3 个哨兵监视 我进行了搜索 文档似乎不清楚如何最好地升级此类配置 我目前使用的是 3 0 6 版本 我想升级到最新的 5 0 5 我对这方面的程序有几个疑问 升级两个大版本可以吗 我在我们的暂存环境中执
  • Spring Data JPA Redis:无法编写基于自定义方法的查询

    我已经使用 Redis 配置了 Spring Data JPA 并使用RedisRepositorieswith 提供了类似的方法find findAll 所有这些方法似乎都工作得很好 但我无法编写我的自定义方法 RedisEntity f
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 有没有办法让特定的key在集群模式下定位到特定的redis实例上?

    我想让我的多锁位于不同的redis实例上 我发现redission可以指定一个实例来执行命令 但是如果该命令与key相关 则指定的实例会将命令传输到另一个实例 你能给我一些建议吗 你可以 但这并不是微不足道的 首先 Redis 在键中使用大
  • StackExchange.Redis Get 函数抛出 TimeoutException

    我在用着StackExchange Redis与 C 和StackExchangeRedisCacheClient Get函数抛出以下异常 myCacheClient Database StringGet txtKey Text myCac
  • 想要在后台不间断地运行redis-server

    我已经下载了 redis 2 6 16 tar gz 文件并安装成功 安装后我运行 src redis server 它工作正常 但我不想每次都手动运行 src redis server 而是希望 redis server 作为后台进程持续
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客

随机推荐

  • MATLABdiag()用法

    1 提取矩阵的对角线元素 设A为m n矩阵 diag A 函数用于提取矩阵A主对角线元素 产生一个具有min m n 个元素的列向量 diag A k 提取矩阵A第k条对角线的元素 产生一个列向量 注意 矩阵的对角线 与主对角线平行 往上为
  • Unity核心5——Tilemap

    Tilemap 一般称之为瓦片地图或者平铺地图 是 Unity2017 中新增的功能 主要用于快速编辑 2D 游戏中的场景 通过复用资源的形式提升地图多样性 工作原理就是用一张张的小图排列组合为一张大地图 它和 SpriteShape 的异
  • android Scrollview里的内容不停留在顶部的问题

    先说明一下 任何一个页面都应该按照布局的先后顺序来显示 我这出现的问题就是 Scrollview里面嵌套Listview的头布局一进来看不见了 直接被Listview把焦点给抢了 最先显示的是Listview的item部分 直接上图 解决代
  • React中的“计算属性”

    React中的 计算属性 相信许多学习过vue的小伙伴对计算属性都不陌生吧 计算属性能帮我们数据进行一些计算操作 计算属性是依赖于data里面的数据的 在vue中只要计算属性依赖的data值发生改变 则计算属性就会调用 那React中也有计
  • gsaop 有头文件生成wsdl文件

    gsoap ns service name name area gsoap ns service style rpc gsoap ns service encoding encoded gsoap ns service namespace
  • SSM框架之MyBatis(二)--多表查询及查询结果映射

    使用MyBatis这一强大的框架可以解决很多赋值的问题 其中对于子配置文件中的小细节有很多需要注意的地方 使用这个框架后主要就是对于配置文件的编写和配置 今天我写了一个多表查询 表的基本结构如下 用户表t user 用户编号uid 账号ac
  • CNN中特征融合的一些策略

    Introduction 特征融合的方法很多 如果数学化地表示 大体可以分为以下几种 X Y textbf X textbf Y X Y X
  • 12. Xaml Calendar控价 时间控件-->像挂历

    1 运行图片 2 运行源码 a xaml 源码
  • 通信原理复习(四)——基带数字信号的表示和传输

    数字信号传输的标志 1 除去直流分量和频率很低的分量 2 在接收端得到的每个码元的起止时刻信息 3 使信号的频谱和信道的传输特性相匹配 波形 1 单极性波形 只适合用导线连接的各点之间做近距离传输 0和 V V 2 双极性波形 取 V和 V
  • AD导入3D模型

    我之前写过一篇文章也是说AD的3D模型的 http blog csdn net tq384998430 article details 78614014 介绍的是使用AD自带的功能绘制3D模型 但是这样绘制出来的形状并不是很好看 如果导入元
  • el-table的无限滚动(效果比虚拟滚动更优)

    步骤 1 前端安装 save el table infinite scrol npm install save el table infinite scroll 2 全局引用 在main js中引用 import Vue from vue
  • C语言实现八进制转十进制

    八进制转十进制 include
  • java类的生命周期

    如图 1 加载 我们编写一个java的源文件 经过编译后生成一个后缀名为 class的文件 这结合四字节码文件 java虚拟机就识别这种文件 java的生命周期就是class文件从加载到消亡的过程 关于加载 其实 就是将源文件的class文
  • 关键元器件选型设计指引--通用逻辑器件(逻辑IC)

    1 物料分类 标准逻辑器件 标准数字逻辑IC集成电路可以从工艺 功能和电平三个方面划分 列表所示 注 常见的逻辑电路有54军用系列和74商用系列 两者电路功能一致 本文仅讨论74系列 按照制造工艺特点分类 工艺 逻辑器件产品族 优点 不足
  • sublime-text3-自定义代码补全

    自定义代码补全 打开sublime text3 选择菜单栏 工具 gt 新代码段 按以下模板填充 content 在CDATA中填补全内容 tabTrigger 触发代码 scope 文件类型 description 描述信息 下例为 输入
  • Kafka一致性

    一 存在的一致性问题 1 生产者和Kafka存储一致性的问题 即生产了多少条消息 就要成功保存多少条消息 不能丢失 不能重复 更重要的是不丢失 其实就是要确保消息写入成功 这可以通过acks 1来保证 保证所有ISR的副本都是一致的 即一条
  • CSP 202212-1 现值计算

    答题 主要就是 include
  • “无法从静态上下文中引用非静态变量,非静态方法”原因及解决

    1 原因 1 用static修饰的方法为静态方法 修饰变量则为静态变量 又分别叫做类方法或者类变量 这些从属于类 是类本身具备的 没有实例也会存在 2 而非静态方法和变量的存在依赖于对象 是对象的属性 需要先创建实例对象 然后通过对象调用
  • ★SQL注入漏洞(7)SQL注入高级篇

    分析目标防火墙并且跳过 1 直接拉黑ip类防火墙 2 过滤删除相应字符的防火墙 1 waf注释符号过滤 例题 Sqli labs T23 特点 注释符 被过滤掉了 绕过方法 逻辑上补全闭合即可 多加一次url编码只是更安全的绕过 selec
  • Redis系列1——数据类型和常用数据操作

    一 redis基础知识 客户端和服务器命令 默认端口号6379 服务器命令 redis server redis windows conf 设置服务一直开启 首先进入redis安装目录 然后执行 redis server service i