关于redis的问题,我的理解正确否?
伊谢尔伦
伊谢尔伦 2017-04-21 10:57:54
0
4
589

从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

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

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(4)
左手右手慢动作

Pertama sekali, jika anda ingin menggunakan berbilang medan, jangan simpan medan secara berasingan atau sirikan objek dan kemudian simpannya. Ini tidak berbeza dengan memcache.

Kedua, anda perlu memahami hakikat bahawa kami tidak menggunakan redis untuk menggantikan sepenuhnya pangkalan data hubungan Seperti yang anda katakan, mencari pengguna dengan nama pengguna tidak perlu dimasukkan ke dalam redis sama sekali hanya untuk menggunakan redis.

Dengan redis anda boleh melakukan caching, jadi anda hanya perlu menggunakan kunci utama sebagai kunci, dan anda juga boleh menggunakan ciri indeksnya untuk membuat senarai

Anda boleh menggunakan hashstoran objek untuk berbilang medan

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

Simpan kunci utama dalam SET atau SORTED SET

SADD user_list 1234

Perlu diambil perhatian bahawa perintah SORT redis boleh menyelesaikan banyak pertanyaan dan bukannya SQL, seperti kaedah storan cincang di atas, jika kita ingin mengisih mengikut timestamp dan menyenaraikan user dalam tempoh tertentu julat Datang

SORT user_list BY user:*->timestamp GET # LIMIT 0 10 DESC

Ia bersamaan dengan pernyataan SQL

SELECT * FROM user ORDER BY timestamp DESC LIMIT 0 10
刘奇

Soalan pertama hanyalah bahawa anda menggunakan redis sebagai memcache, untuk memahami struktur cincangan Maklumat pengguna harus menggunakan struktur cincang, seperti pengguna:1->{username:sss,umur:12}

.
PHPzhong

redis menyokong berbilang

迷茫

Gunakan lebih banyak kaedah cincang untuk menyimpan data dalam redis. Dengan cara ini, beberapa persatuan yang perlu digunakan boleh disimpan menggunakan nilai utama dalam cincang. Kedua, beberapa perhubungan dan tabiat kaedah pertanyaan yang asalnya direka dalam pangkalan data hubungan perlu diselaraskan apabila menggunakan redis. Kita tidak boleh meniru sepenuhnya idea-idea sebelumnya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan