検索

ホームページ  >  に質問  >  本文

关于redis的问题,我的理解正确否?

从RDBMS彻底的过渡到NoSQL,关键的是不是NoSQL中的Key设计咧? 比如原先的登录注册,RDBMS中可能是

user_id, username, password
1      , user    , xxxxxxxx
2      , user2   , xxxxxxxx

过渡到Redis,可以这样

users:user password
users:user2 password

检测用户是否已经注册

RDBMS:
select count(*) from table where username = 'user2'

Redis:
Get users:user2

但是抛弃“关系”又怎么实现“关系”呢? 比如用户还有profile。 redis可以以users:username为key。然后存个对象进去。 但是怎么进行搜索呢?比如,我要获取所有注册时间在指定时间的一批用户。当然,可以按照users:username:profile_name挨个存,比如:

users:user2:profile_photo /path/hash.jpg
users:user2:profile_regdate timestamp
users:user3:profile_regdate timestamp

但是,会不会出现,删除某用户的时候,由于特殊原因导致删不干净的问题……比如user3的所有数据正在删除,然后异常了,导致profile_regdate没有删除。而且以后也检测不到了。

再者,好友关系。redis可以这么存:

relation:uid:fuid timestamp
relation:fuid:uid timestamp

假设需求:获取我的好友的所有除我以外的所有好友。

暂时就这么多……不知道表述是否清楚了。

伊谢尔伦伊谢尔伦2799日前595

全員に返信(4)返信します

  • ringa_lee

    ringa_lee2017-04-21 10:59:54

    まず第一に、複数のフィールドを使用する場合は、フィールドを個別に保存したり、オブジェクトをシリアル化してから保存したりしないでください。これは memcache と変わりません。

    次に、リレーショナル データベースを完全に置き換えるために redis を使用しているわけではないという事実を理解する必要があります。あなたが言ったように、ユーザー名によるユーザーの検索を redis に入れる必要はまったくありません。レディスを使用します。

    Redis を使用するとキャッシュができるので、キーとして主キーを使用するだけでよく、そのインデックス機能を使用してリストを作成することもできます

    hash オブジェクトを使用して複数のフィールドを保存できますhash对象存储

    HMSET user:1234 name "hello" password "123456" timestamp "12321321"
    

    把主键存到一个SET或者SORTED SET

    SADD user_list 1234
    

    值得注意的是redis的SORT命令可以代替SQL解决很多查询,比如像上面这种哈希存储方式,如果我们要按timestamp排序并在一定范围内列出user リーリー

    主キーを SET または SORTED SET に保存します

    リーリー

    timestamp を押したい場合、Redis の SORT コマンドは、SQL の代わりに、上記のハッシュ ストレージ メソッドなどの多くのクエリを解決できることは注目に値します。 code>特定の範囲内の user を並べ替えてリストします🎜 リーリー 🎜SQL文に相当します🎜 リーリー

    返事
    0
  • 怪我咯

    怪我咯2017-04-21 10:59:54

    最初の質問は、ハッシュ構造を理解するために redis を memcache として使用しているということだけです。ユーザー情報には user:1->{username:sss,age:12} などのハッシュ構造を使用する必要があります。

    返事
    0
  • PHPz

    PHPz2017-04-21 10:59:54

    redis はマルチをサポートします

    返事
    0
  • 迷茫

    迷茫2017-04-21 10:59:54

    より多くのハッシュメソッドを使用してデータを Redis に保存します。このようにして、使用する必要があるいくつかの関連付けをキー値としてハッシュに保存できます。次に、リレーショナル データベースで元々設計されていた一部のリレーションシップとクエリ メソッドの習慣は、redis を使用するときに調整する必要があります。以前のアイデアを完全にコピーすることはできません。

    返事
    0
  • キャンセル返事