Қайта пернесі/мәні ішіндегі бірнеше мәндер бойынша іздеу

Мен Хероку қосымшасында менің түпнұсқалығын растайтын пайдаланушыларды пайдалану үшін Redis-ді пайдалануды ұсындым, сондықтан мен бүгін секіріп шығуды жөн көрдім. Мен не істеуді қаласам, Redis дүкеніндегі пайдаланушыларға арналған хэштерді сақтауға болады:

{
   id:4532143215432,
   username:'davejlong',
   email:'[email protected]'
}

Содан кейін пайдаланушы аты немесе идентификатор арқылы іздеуге болады. Бұл Redis-ге қалай болғанда да мүмкін бе?

I am using the node.js redis module which supports any redis command https://github.com/mranney/node_redis

5

2 жауаптар

Әр пайдаланушыға екі рет сақтау сияқты қарапайым. Бір рет идентификатор кілтімен және бір рет пайдаланушы атының кілтімен бірге.

Бұл жадты сақтаудың ең ықшам тәсілі - бұл идентификаторларға пайдаланушы аттары енгізу, сондықтан сіздің пайдаланушы атыңыздың сұрауы ұнайды: пайдаланушы атын сұрау, идентификатор алу; идентификаторға қойыңыз, ақпарат алыңыз.

Өкінішке орай, бірдей нақты деректерді екі түрлі пернемен енгізудің жақсы жолы жоқ.


Мысалы, сіз жаңа пайдаланушыны кірістіріп, одан кейін оны сұратқан кезде:

redis 127.0.0.1:6379> HMSET id:4532143215432 username davejlong email [email protected]
OK
redis 127.0.0.1:6379> HMSET user:davejlong id 4532143215432 email [email protected]
OK
redis 127.0.0.1:6379> HGET id:4532143215432 username
"davejlong"
redis 127.0.0.1:6379> HGET user:davejlong id
"4532143215432"
redis 127.0.0.1:6379> HMGET user:davejlong email id
1) "[email protected]"
2) "4532143215432"
redis 127.0.0.1:6379> DEL user:davejlong
(integer) 1
redis 127.0.0.1:6379> DEL id:4532143215432
(integer) 1

Пайдаланушыны жасаған кезде HMSET-ды екі рет пайдаланамын. Енді мен пайдаланушы атына немесе идентификаторына сұрау бере аламын. Мен қазір екі кілтті де жоюға тура келеді.

3
қосылды
CLI-те қалай жасауға болатынымды көрсете аласыз ба? Мен бұл барлық жаңалықтарды мүлдем жаңадан жасаймын, сондықтан мен хэш, тізім және т.б. пайдалануды қаламаймын.
қосылды автор Dave Long, көзі
Менің жауапым мысалмен жаңартылды.
қосылды автор Donald Miner, көзі
Мұнда қайталанатын деректерді жасайсыз. Қолдану индекстерін қарастырыңыз.
қосылды автор phil pirozhkov, көзі

@Orangeoctopus usecae-де бірнеше проблемалар бар.

redis 127.0.0.1:6379> HMSET id:4532143215432 username davejlong [email protected] OK redis 127.0.0.1:6379> HMSET user:davejlong id 4532143215432 email [email protected] OK

This will make duplication, think about adding new values and deleting & updating.

Сондықтан мен мұны жақсы көремін

SET user:davejlong 1
HMSET user:1 username davejlong email [email protected] 

1) Пайдаланушы аты болған жағдайда

 redis.get('user:davejlong',function(err,id){
     console.log('User Id of @davejlong: ' + id);
     redis.hgetall('user:'+id,function(err,user){
        console.log('User Data: ' + user);
     })
  })

2) Id кезде

   redis.hgetall('user:1',function(err,user){
       console.log('User Data: ' + user);
    })
2
қосылды
@philpirozhkov ...
қосылды автор Ganesh Kumar, көзі
Мен мұны «Бұл неғұрлым ықшамдау тәсілі ...» деп атадым, бірақ оны жазу үшін жалқау болды. +1
қосылды автор Donald Miner, көзі
Кешіріңіз, мен поштамен табу мүмкіндігін қоспай тұрып, мәселені жіберіп алдым. SET пайдаланушысы: [email protected] 1 және сіз пошта арқылы таба аласыз
қосылды автор phil pirozhkov, көзі